const SliceA = createSlice({
name: "sliceA",
initialState: {},
reducers: {},
extraReducers(builder) {
builder
.addCase("a1/menueData/loaded", (state,action) => {
//do what I want with action.payload
}
}
}
// in a different file
const SliceB = createSlice({
name: "sliceB",
initialState: {},
reducers: {},
extraReducers(builder) {
builder
.addCase("a1/menueData/loaded", (state,action) => {
//do what I want with action.payload, which is the same one as
//in reducer A above
}
}
}
2条答案
按热度按时间mi7gmzs61#
有三种方法可以达到兄弟切片的状态:
getState
在dispatch(action)中为UI切片创建一个动作,getState返回整个存储对象,请参见然后读取
actionThatUpdatesUISlice
更新的状态。1.在创建子菜单的组件中使用
useSelector
。从tableSlice
和uiSlice
读取:1.如果您正在执行某种开销很大的计算来为ui切片中的子菜单创建数据,则可以使用
createSelector
,但如果您不执行任何开销很大的计算,则前两种方法是最佳的:wkftcu5l2#
我最终采取的方法是在第二个切片上添加一个reducer,它捕获与第一个切片相同的动作,因此两者同时获得相同的有效负载,彼此没有依赖性。
但是,如果我可以用一个简单的选择器来解决这个问题(就像我的问题中的评论所建议的那样,它会更好)。
第一切片: