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

SOu*_*dil 1 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' }]}
/>
Run Code Online (Sandbox Code Playgroud)

homepage.description是关于的文字lang/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' }]}
            />
    );
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话?还是请问有没有其他替代方法或最佳实践?

提前致谢

Bor*_*par 5

是的,如果使用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);
Run Code Online (Sandbox Code Playgroud)