如何在 SPA 中通过 React 动态加载矩区域设置并强制在本地环境和生产中重新渲染?

Joa*_*ira 5 localization momentjs reactjs

我拒绝立即加载所有语言环境(在我的例子中为 18、70+KB),我想知道动态加载它们的最佳方法是什么。

这是我到目前为止所得到的,但有一些注意事项:

  • 它在生产中不起作用,因为node_modules该环境中没有文件夹。我想我们必须将当前语言环境 JS 文件放入public文件夹中才能在生产中加载它们
  • 它不会使用日期触发组件的重新渲染,因此可能需要不同的全局状态来处理该问题
const [, { languages }] = useTranslation();

useEffect(() => {
  async function loadMomentLocale() {
    // Requires switch because dynamic imports don't support string interpolation
    switch (languages[0]) {
      case 'es':
        await import('moment/locale/es');
        break;
      case 'fr':
        await import('moment/locale/fr');
        break;
    }
  }

  if (languages) {
    loadMomentLocale().then(() => moment.locale(languages[0]));
  }
}, [languages]);
Run Code Online (Sandbox Code Playgroud)