【问题标题】:Is there a way to access global state in createSlice?有没有办法在 createSlice 中访问全局状态?
【发布时间】:2020-06-29 12:53:25
【问题描述】:

这是一个例子:

const user = createSlice({
  name: 'user',
  initialState: { name: '', age: 20 },
  reducers: {
    setUserName: (state, action) => {
      state.name = action.payload // mutate the state all you want with immer
    }
  },
  // "map object API"
  extraReducers: {
    [counter.actions.increment]: (state, action) => {
      state.age += 1
    }
  }
})

我可以访问计数器状态吗? 假设我只想在计数器为 30 时增加年龄。否则,我需要在 useEffect 钩子中的计数发生变化时进行监听并调度一些处理年龄增加的操作 (?)。

换句话说,使用redux-toolkit根据当前全局状态计算状态切片的最佳方法是什么?

【问题讨论】:

    标签: reactjs redux redux-toolkit


    【解决方案1】:

    the Redux FAQ entry on sharing state between reducers 对此进行了介绍。

    粘贴关键点:

    • 如果 reducer 需要了解来自另一个状态切片的数据,则可能需要重新组织状态树形状,以便单个 reducer 处理更多数据。
    • 您可能需要编写一些自定义函数来处理其中一些操作。这可能需要用您自己的顶级 reducer 函数替换 combineReducers。您还可以使用 reduce-reducers 等实用程序运行 combineReducers 来处理大多数操作,还可以为跨状态切片的特定操作运行更专业的 reducer。
    • redux-thunk 等异步操作创建者可以通过getState() 访问整个状态。动作创建者可以从状态中检索其他数据并将其放入动作中,以便每个 reducer 都有足够的信息来更新自己的状态切片。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2017-12-10
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      相关资源
      最近更新 更多