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

React中如何通过LocalStorage实现页面刷新后保留语言偏好设置

解决方案

当前语言状态仅存储在Redux运行时内存中,页面刷新后内存数据会重置为初始默认值,因此会回到荷兰语。要实现刷新后保留语言设置,需要将用户语言偏好持久化存储在localStorage中,初始化时优先读取存储的值即可,修改如下:

  • 第一步:修改语言切换逻辑,用户选择语言后同步存入本地存储
    修改handleLanguageChange函数:
function handleLanguageChange(lng) {
    dispatch(changeLanguage(lng.id));
    // 新增:持久化存储用户选择的语言
    localStorage.setItem('preferredLanguage', lng.id);
    langMenuClose();
}
  • 第二步:修改初始化逻辑,优先读取本地存储的语言设置
    如果你的项目使用i18next管理国际化,修改i18n初始化配置:
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

i18n
  .use(initReactI18next)
  .init({
    // 优先读本地存储的语言偏好,不存在则用默认荷兰语
    lng: localStorage.getItem('preferredLanguage') || 'nl',
    // 其余原有配置保持不变
    resources: {
      nl: { /* 原有荷兰语翻译包 */ },
      en: { /* 原有英文翻译包 */ }
    }
  });

如果你是自己用Redux管理i18n状态,修改对应reducer的初始值即可:

const initialState = {
  // 优先读取本地存储的值
  language: localStorage.getItem('preferredLanguage') || 'nl'
};

function i18nReducer(state = initialState, action) {
  switch(action.type) {
    case 'CHANGE_LANGUAGE':
      return { ...state, language: action.payload };
    default:
      return state;
  }
}

内容的提问来源于stack exchange,提问作者Manko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:06:04