我想formatMessage
使用react-intl
来插入一条消息作为占位符,但我不知道访问此功能的正确方法。
这是我所拥有的简化版本:
// index.tsx
<IntlProvider locale={`fr-FR`} messages={messages_fr}>
<NameForm/>
</IntlProvider>
// nameForm.tsx
interface NameFormProps {
intl?: InjectedIntlProps,
}
export default injectIntl(NameForm);
class NameForm extends React.Component<NameFormProps, {}> {
render() {
let namePlaceholder = this.props.intl.formatMessage({
id: "NAME_PLACEHOLDER",
defaultMessage: "name"
});
return (
<form>
<input placeholder={namePlaceholder} type="text"/>
</form>
);
}
}
我用作道具InjectedIntlProps
的类型,因为似乎没有提供方法。intl
IntlShape
formatMessage
我添加了一个?到intl
道具,因为我一直有一个Property 'intl' is missing
(但不injectIntl
应该在没有这个道具的情况下返回一个组件?)
现在它编译了,但是运行时出现错误Cannot read property 'displayName' of undefined
。我猜这是因为默认导出没有明确的名称)。
我觉得我没有朝着正确的方向前进,但是找不到 typescript/react-intl 项目的任何示例。
谢谢你的帮助!