是否可以将React-intl用作变量?

时间:2017-05-30 11:39:55

标签: reactjs react-intl react-helmet

我正在使用react-intlreact-helmet!我试图将元描述传递给Helmet作为翻译文本,但似乎这是不可能的!

这就是我所做的:

<Helmet
     meta={[{ name: 'description', content: { id: 'homepage.description'} }]}
     link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
/>

homepage.descriptionlang/en/en.json上的文字。

我想如果翻译可以被抓取并用作变量,那么它很容易使用,我会这样做:

render() {
    const description = formatMessage({ id: 'homepage.description', values: {country: 'Morocco'} });
    return (
        <Helmet
              title={pageTitle}
              meta={[{ name: 'description', content:  {{description}} }]}
              link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
            />
    );
}

如果这可能吗?或者确实存在这种或最佳实践的替代方案吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

是的,如果您使用injectIntl​​,这是可能的,这样您就可以获得翻译的字符串并在需要时使用:

import {injectIntl} from 'react-intl';

...
render() {
    const intl = this.props.intl;
    const description = intl.formatMessage({ id: 'homepage.description', values: {country: 'Morocco'} });
    return (
        <Helmet
              title={pageTitle}
              meta={[{ name: 'description', content:  {{description}} }]}
              link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
            />
    );
}
...

export default injectIntl(YourComponent);

答案 1 :(得分:0)

您可以轻松做到:

const Example = injectIntl( ({ intl }) => {
   return (
      <MyComponentt propExampple={ intl.formatMessage({ id: 'translation-ID' }) } />
   )
} );