Dav*_* Xu 9 javascript ecmascript-6 reactjs
有没有办法在React ES6类组件中包含mixin?(即extends React.Component)?如果是这样,官方的做法是什么?
我想PureRenderMixin在我的一个组件中包含一个具有不可变状态的组件来加速差异化过程.
Boh*_*ets 14
https://facebook.github.io/react/docs/shallow-compare.html
shallowCompare是一个辅助函数,用于在将ES6类与React一起使用时实现与PureRenderMixin相同的功能.
import shallowCompare from 'react-addons-shallow-compare';
export default class SampleComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
// pure render
return shallowCompare(this, nextProps, nextState);
}
render() {
return <div className={this.props.className}>foo</div>;
}
}
Run Code Online (Sandbox Code Playgroud)
源代码的PureRenderMixin方法是:
var ReactComponentWithPureRenderMixin = {
shouldComponentUpdate: function(nextProps, nextState) {
return shallowCompare(this, nextProps, nextState);
},
};
Run Code Online (Sandbox Code Playgroud)
所以,当你使用时PureRenderMixin,你实际上使用shallowCompare
更新15.3.0:
添加
React.PureComponent- 要扩展的新基类,react-addons-pure-render-mixin现在替换mixin不能与ES2015类一起使用.