React-i18下一个悬念

时间:2019-11-15 05:49:00

标签: reactjs react-i18next

我像示例一样使用React-i18next

import React, { Suspense } from 'react';
import { useTranslation } from 'react-i18next';

function App() {
  return (
    <Suspense fallback="loading">
      <MyComponent />
   </Suspense>
   );
}

但是Suspense正在破坏我的其他要素之一,即react-masonry-layout。有可能不使用Suspense吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

react-i18nnext默认使用Suspense。如果您不想使用它,则必须在配置中指定它。如果您有i18n配置文件,则可以在init对象的react部分中将useSuspense标志设置为false。

//Example config
i18n
.use(Backend)
.use(LanguageDetector)
.use(initReactI18next)
.init({
   fallbackLng: "en",
   debug: true,
   resources: {

   },
   interpolation: {
     escapeValue: false,
   },
  react: {
     wait: true,
     useSuspense: false,
  },
})

或者您也可以在组件中设置标志。

<MyComponent useSuspense={false} />

请注意,选择不使用Suspense具有其含义。您必须编写检查以处理“未就绪”状态,即:在状态未就绪时让正在加载的组件呈现,而在状态就绪时让您的组件呈现。不这样做会导致翻译在加载之前呈现。