componentDidMount((只被调用一次,但它内部的dispatch和subscribe函数被调用多次。。。这个函数的第1行只是第一次执行,但每次重新呈现我的组件时都会调用subscribe函数。react如何在不遇到console.log("mounted"((即函数的第一行(的情况下到达订阅函数?
componentDidMount() {
console.log("mounted"); //executed just once
const {store}=this.props;
store.subscribe(()=>{
console.log("SUBSCRIBE"); // executed everytime my funct is re rendered
this.forceUpdate();
})
store.dispatch(addMovies(movies));
console.log("State is :", store.getState());
}
您已经订阅了redux存储并提供了回调。
订阅侦听器
添加一个更改侦听器任何时候都会调用它已调度,并且状态树的某些部分可能具有已更改然后可以调用
getState()
读取当前状态树在回调中。
回调将在调度操作时调用,并且状态树可能已更改。这包括由任何其他组件调度到存储的任何操作,而不仅仅是在其中创建订阅的组件。
如果组件重新发布器和redux存储更新之间存在一对一的关系,那么这个组件很可能正在调度一个操作,最终导致它被重新发布。