我正在使用react-intl
和react-helmet
!我试图将元描述传递给Helmet作为翻译文本,但似乎这是不可能的!
这就是我所做的:
<Helmet
meta={[{ name: 'description', content: { id: 'homepage.description'} }]}
link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
/>
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' }]}
/>
);
}
如果这可能吗?或者确实存在这种或最佳实践的替代方案吗?
提前致谢
答案 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' }) } />
)
} );