如何使用 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}`];
},
...
},
});
在我的 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}`];
},
...
},
});