You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:05:17