如何使用mixins与Typescript和React JSX(TSX)

时间:2016-12-20 20:49:58

标签: reactjs typescript react-jsx tsx

我有一个用Typescript 2.0.6 + JSX(TSX)编写的React组件,需要使用LinkedStateMixin。如何在我的班级定义中包含mixin?我没有成功搜索官方文档。有没有办法在我的组件类中包含mixin?

注意:我正在使用ReactJS v0.14.6

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

不幸的是,React已正式摆脱mixin模式:https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html。如果您不使用ES6样式的反应组件,您仍然可以使用它们。但是,如果您确实需要它,可以使用此库:https://github.com/brigand/react-mixin