React i18next - 更改语言不会重新渲染使用 React.memo 存储的组件

问题描述 投票:0回答:2

目前,我们正在为我们的 React 项目使用可重用的组件库,该项目使用 I18nextProvider 并为集成应用程序传递 i18n 实例。其中一个应用程序使用的功能组件使用 React.memo 来处理不同的用例。对于这些组件,当我们更改语言时,它不会触发重新渲染。当我们手动进行更改时,它会反映在新的语言值中。当我们更改语言时,是否可以强制重新渲染使用 React.memo 的组件?

有人遇到过类似的问题吗? memoize 可以用于处理翻译更新吗?

reactjs i18next react-i18next
2个回答
0
投票

您可能没有将 t 作为备忘录依赖项传递

const welcome = useMemo(() => <Trans t={t}>Welcome to React</Trans>, [t]);

btw:也可能你根本不需要备忘录...


0
投票

同样面临这个问题,我发现的解决方法是在记忆组件中使用“useTranslation”挂钩(即使您不使用其中的 t() )

const MyComponent = () => {
  const { t } = useTranslation();
  // or even
  useTranslation();
  return (
    // some jsx here...
  )
}

export default memo(MyComponent);
© www.soinside.com 2019 - 2024. All rights reserved.