reactjs - 如何在 Typescript 與 React JSX (TSX) 中使用 mixins
我有一個用 Typescript 2.0.6 + JSX (TSX) 編寫的 React 組件,需要使用 LinkedStateMixin。我如何在我的類定義中包含這個 mixin?我搜尋過官方文件但沒有成功。有沒有方法可以在我的組件類中包含一個 mixin?
注意:我正在使用 ReactJS v0.14.6
答案#1
我不知道你是否了解 mixins 的現狀……所以: https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html
考慮更新到 React v15.4.0 並使用高階組件。
你已被警告
順便說一下,如果你真的需要它。安裝這個 mixin:npm install react-addons-linked-state-mixin,然後做類似這樣的操作來達到你想要的效果:
// choose one way :P
import LinkedStateMixin from 'react-addons-linked-state-mixin' // ES6
var LinkedStateMixin = require('react-addons-linked-state-mixin') // ES5 with npm
var LinkedStateMixin = React.addons.LinkedStateMixin; // ES5 with react-with-addons.js
var WithLink = React.createClass({
mixins: [LinkedStateMixin],
getInitialState: function() {
return {message: 'Hello!'};
},
render: function() {
return <input type="text" valueLink={this.linkState('message')} />;
}
});
https://facebook.github.io/react/docs/two-way-binding-helpers.html#linkedstatemixin-before-and-after
答案#2
不幸的是,React 已經正式放棄了 mixin 模式:https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html。如果你沒有使用 ES6 風格的 React 組件,你仍然可以使用它們。不過,如果你真的需要,你可以使用這個庫:https://github.com/brigand/react-mixin
