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

How can I trigger a function when one of my state changes?

每当有人点击侧边菜单按钮时,我的组件中的状态就会发生变化(比如从 "New York Knicks" 到 "Boston Celtics")。在 componentDidMount 中,我有

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

        this.bindAsArray(knicksRef, 'articles');

    }

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

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

您想在状态更改时执行操作。我猜你是在你的 _onChange 方法中调用 setState(),所以只需将你的逻辑包装到另一个方法中,然后从 _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');
}