redux toolkit在slice reducer之间共享状态

redux toolkit在slice reducer之间共享状态,redux,redux-toolkit,Redux,Redux Toolkit,我正在构建一个应用程序,其中一个“切片缩减器”需要访问另一个“切片缩减器”的状态。redux文档谈到使用自定义联合收割机减速器,以便将根状态传递给减速器- 到目前为止,我已经为我的根减速器准备了以下内容: import cats from '../slices/cats' import dogs from '../slices/dogs' import status from '../slices/status' function combinedReducer(state = {}, act

我正在构建一个应用程序,其中一个“切片缩减器”需要访问另一个“切片缩减器”的状态。redux文档谈到使用自定义联合收割机减速器,以便将根状态传递给减速器-

到目前为止,我已经为我的根减速器准备了以下内容:

import cats from '../slices/cats'
import dogs from '../slices/dogs'
import status from '../slices/status'

function combinedReducer(state = {}, action) {
  return {
    status: status(state.status, action),
    dogs: dogs(state.dogs, action),
    cats: cats(state.cats, action, state),
  };
}

 export default configureStore({ reducer: combinedReducer });
我似乎无法获得我的cats还原程序的根状态-作为上面的第3个参数传入

const assetsSlice = createSlice({


name: 'cats',
  initialState,
  reducers: {
    setFetched: (state, { payload }, root) => {
      // root is undefined
      state.type = payload + root.dogs.legs;
    },
  },
});
这应该有用,不是吗

如果我使用不是由
createSlice
创建的普通减速机,我就能够获得根状态

export default (state = initialState, action, root) => {
// root - { status: {}, dogs: {}, cats: {} }
};

这不可能作为第三个参数,因为RTK的约简器只将前两个参数传递给案例约简器

不过,您可以将其添加到操作中(但这是理所当然的):

函数组合删除器(状态={},操作){
const actionWithFullState={…action,meta:{…action.meta,fullState:state}
返回{
状态:状态(状态、状态、动作),
狗:狗(国家、狗、行动),
猫:猫(state.cats,actionWithFullState),
};
}

是的,我考虑过,但由于我的天性,我不想追求它。最后,我通过使用
extrareducer
和更新我正在使用的“slice reducer”(听起来绝对像是更干净的解决方案)来收听另一个“slice reducer”的操作:)