当我的状态发生变化时,如何触发功能?

时间:2015-08-28 16:07:03

标签: reactjs firebase

当有人点击侧面菜单按钮时,我的组件中的状态会发生变化(例如从"纽约尼克斯"到#34;波士顿凯尔特人队")。在componentDidMount中,我有

componentDidMount() {
        TeamStore.addChangeListener(this._onChange);
        var knicksRef = new Firebase(this.props.baseUrl + this.state.name + "/results");

        this.bindAsArray(knicksRef, 'articles');

    }

它基本上从状态类别中获取数组,并将其作为数组绑定到"文章"。但是,我希望每次状态发生变化时,都会从不同的类别中提取并将其与文章绑定。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

ComponentDidMount as said in the doc只会被调用一次。

您希望在状态更改时执行操作。我猜你在setState()方法中调用_onChange,所以只需将逻辑包装到另一种方法中,然后从_onChangecomponentDidMount方法调用它。

请注意,您也可以将此逻辑放在componentDidUpdate内,只要组件在状态发生变化时自行更新,就会调用它。但它不会在第一次渲染时调用。

所以,最后,我认为你应该这样做:

componentDidMount() {
    TeamStore.addChangeListener(this._onChange);
    this._updateKnickRef();
}

_onChange() {
    //update state here
    this._updateKnicksRef();
}

_updateKnicksRef() {
    var knicksRef = new Firebase(this.props.baseUrl + this.state.name + "/results");

    this.bindAsArray(knicksRef, 'articles');
}