当我的状态之一发生变化时,如何触发功能?
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()
,所以只需将你的逻辑包装到另一个方法中,然后从 _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');
}
每当有人点击侧边菜单按钮时,我的组件中的状态就会发生变化(比如从 "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()
,所以只需将你的逻辑包装到另一个方法中,然后从 _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');
}