реагировать на ошибки i18next "hooks" при использовании t () из useTranslation () - PullRequest
0 голосов
/ 15 марта 2019

Я использую библиотеку React-i18next, и мне нужно получить функцию перевода t() внутри функции.

export function translateCell(cell) {
  const { t } = useTranslation();
  return (t(cell));
}

При использовании useTranslation() происходит сбой с ошибкой

Хуки могут вызываться только внутри тела компонента функции.

Я пытался использовать I18nextProvider, а также .use(initReactI18next) при инициализации, но обе установки приводят к одной и той же ошибке.

Я использую это неправильно или я что-то неправильно понял?

EDIT: Я обнаружил, что только функции, которые будут отображаться как компоненты, могут использовать useTranslation. Нравится

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

1 Ответ

0 голосов
/ 19 марта 2019

Я нашел решение экспортировать объект i18n после инициализации и использовать его во всех других местах, которые мне нужны.

файл i18nSetup.js :

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

export default i18n;

В других файлах :

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

export function translateCell(cell) {
  return (i18n.t(cell));
}
...