当有人点击侧面菜单按钮时,我的组件中的状态会发生变化(例如从"纽约尼克斯"到#34;波士顿凯尔特人队")。在componentDidMount中,我有
componentDidMount() {
TeamStore.addChangeListener(this._onChange);
var knicksRef = new Firebase(this.props.baseUrl + this.state.name + "/results");
this.bindAsArray(knicksRef, 'articles');
}
它基本上从状态类别中获取数组,并将其作为数组绑定到"文章"。但是,我希望每次状态发生变化时,都会从不同的类别中提取并将其与文章绑定。我怎样才能做到这一点?
答案 0 :(得分:2)
ComponentDidMount
as said in the doc只会被调用一次。
您希望在状态更改时执行操作。我猜你在setState()
方法中调用_onChange
,所以只需将逻辑包装到另一种方法中,然后从_onChange
和componentDidMount
方法调用它。
请注意,您也可以将此逻辑放在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');
}