【问题标题】:React + Redux : When using a redux reducer, Is the use of prevstate necessary if we want to rely on previous state?React + Redux :使用redux reducer 时,如果我们想依赖先前的状态,是否需要使用prevstate?
【发布时间】:2023-03-05 23:52:02
【问题描述】:

使用Redux,如果我们想依赖之前的状态来改变当前状态的值,我们是不是需要像调用常规的setStatesetstate(prevstate => !prevstate.boolean )那样使用prevstate回调函数? (例如,如果我们想根据之前的布尔值更改状态内的布尔值)。

那么下面的例子可以吗?不会有任何批处理的 setState 或会导致“抽搐”状态的东西?


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;

我希望我的问题有意义!

谢谢!

问候

【问题讨论】:

    标签: javascript reactjs redux state reducers


    【解决方案1】:

    在 Redux reducer 中,您无需担心回调以确保您使用的是最新状态,因为没有后台批处理更新。

    每个 Redux 操作/状态更新都会在调用时执行。

    【讨论】:

    • 还需要注意的是,当一个依赖state.showToolbar的组件在渲染过程中调用"TOGGLE_TOOLBAR"时,会导致无限的更新流
    • 这里没有任何东西会固有地创建循环。当然,您可以在代码的其他地方创建无限循环,但这似乎超出了问题的范围。
    • 我意识到它本质上不会产生循环,尽管由于@Tan-Aki 担心这一点,最好给出一个可能发生这种情况的原因(因为我以前见过人们犯这个错误并想知道为什么它会导致他们的应用崩溃)
    猜你喜欢
    • 2016-07-12
    • 2021-08-04
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 2020-02-04
    • 2021-08-06
    • 2018-11-14
    相关资源
    最近更新 更多