有没有办法在createSlice中访问全局状态?

时间:2020-03-18 12:14:59

标签: reactjs redux redux-toolkit

这里是一个例子:

InputProps={{
  inputComponent: () => (
    <div style={{ color: "yellow" }}>XXXXXXXXXXXXXXXXX</div>
  )
}}

我可以访问计数器状态吗? 假设我只想在计数器为30时增加年龄。否则,当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 } } }) 钩中的计数发生变化时,我将需要侦听并分配一些处理年龄增加(?)的操作。

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

1 个答案:

答案 0 :(得分:7)

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

粘贴要点:

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