gpt4 book ai didi

javascript - 在辅助方法中 react i18next useTranslation Hook

转载 作者:行者123 更新时间:2023-12-03 06:57:29 26 4
gpt4 key购买 nike

我正在使用带有 react-i18next 的 React

我的 index.tsx 文件包含一些组件,我可以在那里使用翻译功能

index.js

import React, { Suspense } from 'react'
import ReactDOM from 'react-dom';
import * as utils from './Utils';
import './i18n';
import { useTranslation, withTranslation, Trans } from 'react-i18next';

...
const { t, i18n } = useTranslation();
//I can use the translate function here
t("title");
//call a util function
utils.helperFunction(...);
...

这里一切正常。
我现在在一个附加文件中创建了一些辅助函数

Utils.tsx

...
import { useTranslation, withTranslation, Trans } from 'react-i18next';
...
export function helperFunction(props: any){
//do stuff

//now I need some translation here - but useTranslation is not working?
const { t, i18n } = useTranslation();
t("needTranslation");
}

如何在我的辅助函数中使用相同的翻译逻辑? (并不总是将 t 函数传递给辅助方法)

或者在这里使用钩子(Hook)是错误的方法?

出现以下错误
React Hook "useTranslation" is called in function "helperFunction" which is neither a React function component or a custom React Hook function  react-hooks/rules-of-hooks

最佳答案

我通过不使用 useTranslation 解决了我的问题钩了
相反,我移动了 i18n初始化文件(i18n.tsx - 导出 i18n )
并在我的 Utils 类中导入和使用它
我的 实用程序.tsx 文件现在看起来像这样
Utils.tsx

...
import i18n from '../i18n';
...
export function helperFunction(props: any){
//do stuff

//use imported i18n and call the t() method
i18n.t("needTranslation");
}
i18n.tsx
import i18n from "i18next";
import Backend from 'i18next-xhr-backend';
import { initReactI18next } from 'react-i18next';

i18n
.use(Backend)
.use(initReactI18next) // passes i18n down to react-i18next
.init({
lng: "es",
fallbackLng: 'en',
backend: {
loadPath: '/static/locales/{{lng}}/{{ns}}.json'
},
interpolation: {
escapeValue: false
}
});

export default i18n;

关于javascript - 在辅助方法中 react i18next useTranslation Hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com