Reactjs 组件内的Redux unsubscribe将卸载静态调用subscribe回调
我正在手动将React组件连接到Redux存储。是的,我认识雷杜的丹·阿布拉莫夫。我最终会考虑react redux,但现在我想了解到底发生了什么Reactjs 组件内的Redux unsubscribe将卸载静态调用subscribe回调,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在手动将React组件连接到Redux存储。是的,我认识雷杜的丹·阿布拉莫夫。我最终会考虑react redux,但现在我想了解到底发生了什么 componentDidMount() { this.unsubscribe = store.subscribe(() => { const storeState = store.getState(); this.setState({ someData: storeState.so
componentDidMount() {
this.unsubscribe = store.subscribe(() => {
const storeState = store.getState();
this.setState({
someData: storeState.someData
});
}.bind(this));
}
componentWillUnmount () {
this.unsubscribe();
}
这是我在选项卡页面组件中的一些代码。当用户更改选项卡以显示不同的数据时,这些选项卡页面在父组件中进行交换。我已通过调试器并确认,当用户更改选项卡时,会按顺序发生以下情况:
component将卸载激发并调用this.unsubscribe()
。此
是上一个选项卡组件,如预期的那样)
componentDidMount
激发并且如预期的那样,这是新的选项卡组件)
setState
在subscribe回调中被调用,而this
是上一个选项卡,并用错误响应投诉:unsubscribe
是否应该阻止对未安装的组件调用此回调?这似乎表明,做我所做的应该让这个警告消失,只是质疑这是否是一个好主意。但就我而言,它依然存在
我认为这无关紧要,但我使用的是ES6“class”语法,而原来的似乎并不重要
subscribe(listener: () => void): Unsubscribe;
让我们阅读订阅方法文档
dispatch()
调用之前拍摄的。
如果在调用侦听器时订阅或取消订阅,
这不会对当前正在运行的dispatch()
产生任何影响
进步。但是,下一个dispatch()
调用,无论是否嵌套,
将使用订阅列表的最新快照dispatch()
调用之前拍摄的。
如果在调用侦听器时订阅或取消订阅,
这不会对当前正在运行的dispatch()
产生任何影响
进步。但是,下一个dispatch()
调用,无论是否嵌套,
将使用订阅列表的最新快照