这是处理模型更改事件的正确方法吗-
a。handleModelChange函数作为onModelChange道具传递给SubClass。
b。当模型更改事件触发时,为了进行重新渲染,子组件的处理程序会更改主组件的状态。
var _SomeMixin={
componentWillMount: function() {
this.props.options.model.on("MODEL_CHANGED", this.props.onModelChange);
},
componentWillUnmount: function() {
this.props.options.model.off("MODEL_CHANGED", this.props.onModelChange);
},
/* more mixin functions */
}
var SubComponent = React.createClass({
mixins: [_SomeMixin],
render: function() {
return (
<div>
<!-- ... more elements .. >
</div>
);
}
});
var MainComponent = React.createClass({
getInitialState: function() {
return {MainComponentState: []};
},
handleModelChange: function() {
if (this.isMounted()) {
this.setState({MainClassState: this.props.options.model.toJSON()});
}
},
render: function() {
return (
<SubClass options={this.props.options} onModelChange={this.handleModelChange} />
);
}
});
这是通知父组件内部组件已更改的可能方法之一。但这种方法会把你带到一个回调地狱,你每次都必须通过。
更好的解决方案是使用一些状态管理库,如Moreartyjs