目前,我们正在为我们的 React 项目使用可重用的组件库,该项目使用 I18nextProvider 并为集成应用程序传递 i18n 实例。其中一个应用程序使用的功能组件使用 React.memo 来处理不同的用例。对于这些组件,当我们更改语言时,它不会触发重新渲染。当我们手动进行更改时,它会反映在新的语言值中。当我们更改语言时,是否可以强制重新渲染使用 React.memo 的组件?
有人遇到过类似的问题吗? memoize 可以用于处理翻译更新吗?
您可能没有将 t 作为备忘录依赖项传递
const welcome = useMemo(() => <Trans t={t}>Welcome to React</Trans>, [t]);
btw:也可能你根本不需要备忘录...
同样面临这个问题,我发现的解决方法是在记忆组件中使用“useTranslation”挂钩(即使您不使用其中的 t() )
const MyComponent = () => {
const { t } = useTranslation();
// or even
useTranslation();
return (
// some jsx here...
)
}
export default memo(MyComponent);