如何配置Redux Toolkit的preloadedState仅替换指定属性?
如何配置Redux的preloadedState仅替换指定属性,避免覆盖整个initialState?
我尝试将数据存储在localStorage中,在页面刷新时恢复(reHydrate)状态。目前功能可运行,但slice文件中的initialState被完全覆盖了。
我的reHydrateStore函数如下:
const reHydrateStore = () => { if (localStorage.getItem('culture') !== null) { return { login: { culture: JSON.parse(localStorage.getItem('culture')) } }; } }; export default reHydrateStore;
在configureStore中的配置:
preloadedState: reHydrateStore(),
不使用reHydrateStore时,我的initialState对象如下:
const initialState = { isLoading: false, culture: '', error: null, };
使用reHydrateStore后,状态变为:
const initialState = { culture: 'en-US', };
有没有办法配置preloadedState,使其仅替换指定的属性?我知道可以在reHydrateStore方法中设置所有initialState属性,但这种方式需要重复编写代码,非常冗余。
编辑:
我曾将逻辑移到slice中以访问initialState,这是我的初步解决方案:
const reHydrateLoginSlice = () => { if (localStorage.getItem("culture")) { return { login: { ...initialState, culture: JSON.parse(localStorage.getItem("culture")) }, }; } }; export { reHydrateLoginSlice };
不过@Rashomon提出了更优方案,我打算尝试该方案。
内容的提问来源于stack exchange,提问作者J4v4Scr1pt
相关产品推荐
相关产品推荐

