首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >I18Next -等待使用本地数据设置Redux存储

I18Next -等待使用本地数据设置Redux存储
EN

Stack Overflow用户
提问于 2021-05-27 18:54:32
回答 1查看 230关注 0票数 1

我想让i18next等待redux存储准备就绪。我将用户选择的语言存储在商店中,使用redux-persist的persistor在应用程序启动时对其进行恢复。我试着从商店设置语言:

代码语言:javascript
运行
复制
// ...
import store from '../redux';
// ...
const lng = store.getState().user.language
  ? store.getState().user.language
  : Localization.locale.slice(0, 2);

i18next
  // .use(languageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    debug: true,
    resources,
    lng,
  });

但在这一点上,商店仍然在其initialState中,还没有恢复水分。有没有办法让我这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 16:22:41

因此,PersistGate可以实现一个onBeforeLift方法,等待它在解除“加载”状态之前被解析。

代码语言:javascript
运行
复制
const onBeforeLift = async () => {
  await initI18Next();
};

export default function App(): React.ReactElement {
  return (
    <Provider store={store}>
      <PersistGate
        loading={<SplashScreen />}
        persistor={persistor}
        onBeforeLift={onBeforeLift}
      >
        <StatusBar hidden />
        <MainNavigation />
      </PersistGate>
    </Provider>
  );
}

i18n.ts

代码语言:javascript
运行
复制
const resources = {
  en: { translation: en },
  fr: { translation: fr },
  he: { translation: he },
};

export const init = () => {
  const lng = store.getState().user.language
    ? store.getState().user.language
    : Localization.locale.slice(0, 2);

  return (
    i18next
      .use(initReactI18next)
      .init({
        fallbackLng: 'en',
        debug: true,
        resources,
        lng,
      })
  );
};

export default i18next;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67720685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档