在React-i18next中,withNamespaces中的I18nextProvider如何工作?

时间:2019-03-26 07:07:14

标签: reactjs react-i18next

我在应用程序中使用I18nextProviderwithNamespaces来进行反应-i18next。

export const App = () => (
    <I18nextProvider i18n={i18n}>
      <App />
    </I18nextProvider>
);
export default withNamespaces()(ChildComponentOfApp);

但我不了解I18nextProviderwithNamespaces的关系。他们不会传递t函数之类的道具

  

提供者负责使用react上下文api将通过props传入的i18next实例向下传递到所有withNamespaces hocs或NamespacesConsumer渲染prop。

为什么要工作?这是withNamespaces中的渲染道具吗?

我知道withNamespaces是HOC,但是即使在阅读react-i18next以后的源代码之后,I18nextProviderwithNamespaces之间的这种关系还是很困惑。

有人可以解释吗?

1 个答案:

答案 0 :(得分:1)

I18nextProvider->您传入包含要使用的i18next实例的道具“ i18n”-> Provider使用react的上下文API将其沿JSX树向下传递

withNamespaces->从上下文获取i18n实例,并将t函数传递给您的组件。