React.js - 通过事件处理程序更改所有者组件的状态

时间:2015-02-06 00:48:07

标签: javascript reactjs

这是处理模型更改事件的正确方法 -

一个。 handleModelChange函数作为onModelChange prop传递给SubClass。

湾当模型更改事件触发时,为了重新呈现,SubComponent中的处理程序会更改MainComponent的状态。

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} />
                    );
            }
        });

1 个答案:

答案 0 :(得分:0)

这是通知父组件内部组件已更改的可能方法之一。但是这种方法会让你回到地狱,每次都必须通过。

更好的解决方案是使用某些状态管理库,如Moreartyjs