我在应用程序中使用I18nextProvider
和withNamespaces
来进行反应-i18next。
export const App = () => (
<I18nextProvider i18n={i18n}>
<App />
</I18nextProvider>
);
export default withNamespaces()(ChildComponentOfApp);
但我不了解I18nextProvider
和withNamespaces
的关系。他们不会传递t
函数之类的道具
提供者负责使用react上下文api将通过props传入的i18next实例向下传递到所有withNamespaces hocs或NamespacesConsumer渲染prop。
为什么要工作?这是withNamespaces
中的渲染道具吗?
我知道withNamespaces
是HOC,但是即使在阅读react-i18next以后的源代码之后,I18nextProvider
和withNamespaces
之间的这种关系还是很困惑。
有人可以解释吗?
答案 0 :(得分:1)
I18nextProvider->您传入包含要使用的i18next实例的道具“ i18n”-> Provider使用react的上下文API将其沿JSX树向下传递
withNamespaces->从上下文获取i18n实例,并将t函数传递给您的组件。