我有些困惑当我分发redux
操作时的行为。
示例:
onPressAdd() {
this.props.addFloor({
name: this.state.floor_name,
});
console.log(this.props.floors);
}
我正在调用redux的addFloor
动作,它会将楼层添加到存储中的数组中,然后我使用console.log输出该变量,并期望更新状态([{name:'whatever'}]
),但我得到了一个空数组[]
。
示例2:
async onPressAdd() {
await this.props.addFloor({
name: this.state.floor_name,
});
console.log(this.props.floors);
}
在这个例子中,我得到了一个完美更新的store:
[{name:'whatever'}]
我无处不在地阅读“如果没有thunk或saga,则Redux actions dispatch是同步的(直接方式:dispatch action->reduce->store)”,但这证明dispatch是异步的。那么真相在哪里?
thunk
和类似的东西)。问题在于,尽管actions
是同步的,但 React 的响应系统却不是。当您调用console.log
时,React 尚未完成内部更新... - Dupocas