有没有办法在 createSlice 中访问全局状态?
Posted
技术标签:
【中文标题】有没有办法在 createSlice 中访问全局状态?【英文标题】:Is there a way to access global state in 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
根据当前全局状态计算状态切片的最佳方法是什么?
【问题讨论】:
【参考方案1】:the Redux FAQ entry on sharing state between reducers 对此进行了介绍。
粘贴关键点:
如果 reducer 需要了解来自另一个状态切片的数据,则可能需要重新组织状态树形状,以便单个 reducer 处理更多数据。 您可能需要编写一些自定义函数来处理其中一些操作。这可能需要用您自己的*** reducer 函数替换combineReducers
。您还可以使用reduce-reducers
等实用程序运行combineReducers
来处理大多数操作,还可以为跨状态切片的特定操作运行更专业的 reducer。redux-thunk
等异步操作创建者可以通过getState()
访问整个状态。动作创建者可以从状态中检索其他数据并将其放入动作中,以便每个 reducer 都有足够的信息来更新自己的状态切片。
【讨论】:
以上是关于有没有办法在 createSlice 中访问全局状态?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 createSlice 的 reducer 中获取状态值?
如何在 createSlice reducer 中使用 dispatch?
如何使用 redux-toolkit 中的 createSlice 方法在不同的 reducer 函数中使用单个动作类型