reactjs - 有没有办法在 createSlice 中访问全局状态?
问题描述
这是一个例子:
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
?
解决方案
Redux FAQ entry on sharing state between reducers对此进行了介绍。
粘贴关键点:
- 如果 reducer 需要知道来自另一个状态切片的数据,则可能需要重新组织状态树形状,以便单个 reducer 处理更多数据。
- 您可能需要编写一些自定义函数来处理其中一些操作。这可能需要用
combineReducers
您自己的顶级 reducer 函数替换。您还可以使用诸如reduce-reducers
run之类的实用程序combineReducers
来处理大多数操作,还可以为跨状态切片的特定操作运行更专业的 reducer。- 异步操作创建者,例如
redux-thunk
可以通过getState()
. 动作创建者可以从状态中检索额外的数据并将其放入动作中,以便每个减速器都有足够的信息来更新自己的状态切片。
推荐阅读
- angular - 带有 SockJS 连接丢失问题的 Spring Websocket
- c# - 避免覆盖图像文件并创建一个新文件
- android - 如何从 Activity 将片段启动到 viewpager?
- android - 安卓分享链接在打开应用后不可用
- node-serialport - serialport node.js 读取缓冲区问题
- xamarin.forms - 如何在标题栏中添加文本框?
- python - 无法分配查询集,必须是实例
- android - 无法检查用户是否已经存在于android firebase
- android - 如何在android中添加库改造?
- ios - IOS-单击推送通知时应用程序崩溃仅在应用程序统计被杀死时发生