使用 useTranslation() 中的 t() 时,反应 i18next“hooks”错误

Mic*_*nka 6 internationalization i18next reactjs react-i18next

t()我正在使用 React-i18next 库,我需要在函数内部获取翻译函数。

export function translateCell(cell) {
  const { t } = useTranslation();
  return (t(cell));
}
Run Code Online (Sandbox Code Playgroud)

使用时useTranslation()失败并出现错误

钩子只能在函数组件体内调用。

我尝试在初始化中使用I18nextProviderand .use(initReactI18next),但是两种设置都会产生相同的错误。

我是否以错误的方式使用它,或者我误解了什么?

编辑: 我发现,只有将呈现为组件的函数才能使用 useTranslation。喜欢

function export MyComponent (cell) {
  const { t } = useTranslation();
  return (<div>{t(cell)}</div>);
}
...
render(){
<MyComponent/>
Run Code Online (Sandbox Code Playgroud)

Mic*_*nka 2

我找到了在初始化后导出 i18n 对象的解决方案,并在我需要的所有其他地方使用它。

文件 i18nSetup.js

i18n
    .use(initReactI18next)
    .init({
        resources: translationResources,
        interpolation: {
            escapeValue: false 
        }
    });

export default i18n;
Run Code Online (Sandbox Code Playgroud)

在其他文件中

import i18n from "../functions/i18nSetup";

export function translateCell(cell) {
  return (i18n.t(cell));
}
Run Code Online (Sandbox Code Playgroud)