是否可以从IntlProvider重用`intl`上下文?

时间:2018-01-29 13:39:16

标签: javascript reactjs react-intl formatjs

我有一个组件(弹出窗口),它在树外(也就是门户网站)呈现,因此失去了IntlProvider的上下文:

<IntlProvider locale="en">
    <App />
</IntlProvider>
// * <- renders here

Redux通过允许将商店实例作为组件的支柱来解决同样的问题:

import store from "./store";

const Component = () => <Popup store={store} />;

我可以使用类似的方法用于ReactIntl​​吗?

2 个答案:

答案 0 :(得分:0)

您可以使用injectIntl HOC将intl注入您的组件。

只需更改代码:

const Component = () => <Popup ... />

到:

import { injectIntl  } from 'react-intl';
const Component = ({ intl }) => <Popup intl={intl} />
export default injectIntl(Component)

答案 1 :(得分:-1)

如果您不想将组件包装到HOC中,useIntl钩子也很好:)