如何使用 redux-toolkit 访问 redux 中另一个切片的状态?

How can I access state of another slice in redux with redux-toolkit?

在我的 Redux 商店中,我有多个切片,我想访问 speciesSlice 中 settingsSlice 的 lang 状态。

这是我的切片的代码示例:

const settingsSlice = createSlice({
  name: 'settings',
  initialState: { lang: 'en', theme: 'dark' },
  reducers: {
    ...
  },
});

const speciesSlice = createSlice({
  name: 'species',
  initialState: data[`vds-list-${HERE I WANT TO USE THE "lang" STATE OF THE SETTINGSSLICE}`],
  reducers: {
    ...
  },
});

到目前为止,我还没有找到解决方案,所以也许这是不可能的?

我可以只使用一个包含所有状态的切片,但我真的很想将状态的不同部分分成不同的切片。

根据定义,reducer 只能访问它们拥有的状态部分。所以,如果我有 {users: usersReducer, posts: postsReducer}usersReducer 根本无法访问 posts 状态片。

有关详细信息,请参阅 the Redux FAQ entry on "how can I share state between reducers?"

我通过简单地导入 redux store 对象并调用了 getState() 方法来实现这一点。

所以在 speciesSlice reducer 动作中你可以这样做:

const speciesSlice = createSlice({
  name: 'species',
  initialState: data[`vds-list-${HERE I WANT TO USE THE "lang" STATE OF THE SETTINGSSLICE}`],
  reducers: {
    ...
    setLang: (state, _) => {
      const reduxStore = store.getState();
      const lang = reduxStore.settingsSlice.lang;
      state = data[`vds-list-${lang}`];
    },
    ...
  },
});