Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应+;Redux:当使用Redux reducer时,如果我们想依赖于前一个状态,是否需要使用prevstate?_Javascript_Reactjs_Redux_State_Reducers - Fatal编程技术网

Javascript 反应+;Redux:当使用Redux reducer时,如果我们想依赖于前一个状态,是否需要使用prevstate?

Javascript 反应+;Redux:当使用Redux reducer时,如果我们想依赖于前一个状态,是否需要使用prevstate?,javascript,reactjs,redux,state,reducers,Javascript,Reactjs,Redux,State,Reducers,使用Redux,如果我们想依靠前一个状态来更改当前状态的值,我们不需要像调用常规setStatesetState(prevstate=>!prevstate.boolean)时那样使用prevstate回调函数吗?(例如,如果我们想根据布尔值的先前值更改状态中的布尔值) 那么下面的例子可以吗?不会有任何成批设置状态或会导致“抽搐”状态的东西吗 我希望我的问题有意义 谢谢大家! 关于在Redux Reducer中,您无需担心回调以确保使用最新状态,因为没有幕后批处理更新 每次Redux操作/状态更

使用Redux,如果我们想依靠前一个状态来更改当前状态的值,我们不需要像调用常规setState
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;