Javascript 反应+;Redux:当使用Redux reducer时,如果我们想依赖于前一个状态,是否需要使用prevstate?
使用Redux,如果我们想依靠前一个状态来更改当前状态的值,我们不需要像调用常规setStateJavascript 反应+;Redux:当使用Redux reducer时,如果我们想依赖于前一个状态,是否需要使用prevstate?,javascript,reactjs,redux,state,reducers,Javascript,Reactjs,Redux,State,Reducers,使用Redux,如果我们想依靠前一个状态来更改当前状态的值,我们不需要像调用常规setStatesetState(prevstate=>!prevstate.boolean)时那样使用prevstate回调函数吗?(例如,如果我们想根据布尔值的先前值更改状态中的布尔值) 那么下面的例子可以吗?不会有任何成批设置状态或会导致“抽搐”状态的东西吗 我希望我的问题有意义 谢谢大家! 关于在Redux Reducer中,您无需担心回调以确保使用最新状态,因为没有幕后批处理更新 每次Redux操作/状态更
setState(prevstate=>!prevstate.boolean)
时那样使用prevstate回调函数吗?(例如,如果我们想根据布尔值的先前值更改状态中的布尔值)
那么下面的例子可以吗?不会有任何成批设置状态或会导致“抽搐”状态的东西吗
我希望我的问题有意义
谢谢大家!
关于在Redux Reducer中,您无需担心回调以确保使用最新状态,因为没有幕后批处理更新
每次Redux操作/状态更新都是在调用时执行的。值得注意的是,当依赖于
state.showToolbar
的组件在渲染过程中调用“TOGGLE\u TOOLBAR”
时,它将导致无限的更新流。这里没有任何东西会固有地创建循环。当然,你可以在代码的其他地方创建一个无限循环,但这似乎超出了问题的范围。我意识到它不会天生创建循环,尽管@Tan Aki对此表示担忧,最好给出一个可能发生这种情况的原因(因为我以前见过有人犯过这种错误,并且想知道为什么它会使他们的应用程序崩溃)
const initialState = {
showToolbar: false,
};
const toolbarReducer = (state = initialState, action) => {
switch (action.type) {
case "TOGGLE_TOOLBAR":
return {
...state,
showToolbar: !state.showToolbar,
};
default:
return state;
}
};
export default toolbarReducer;