我想使用react-intl API的formatMessage函數來插入一個消息作爲佔位符,但我找不出正確的方式來訪問這個函數。React-intl,與Typescript一起使用API
這裏是什麼,我有一個簡化版本:
//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類型的國際道具,因爲IntlShape沒有似乎提供了一個FORMATMESSAGE方法。
我增加了一個?到intl道具,因爲我一直有一個「屬性」intl'缺少「(但不injectIntl應該返回一個組件沒有這個道具?)
現在它編譯,但運行時出現錯誤(」無法讀取屬性'displayName'的未定義「我猜是因爲默認導出沒有明確的名稱)。
我覺得我不會走向正確的方向,但找不到任何typecript/react-intl項目的例子。
感謝您的幫助!
沒」 t爲我工作......但改變「擴展React.Component」爲「擴展React.PureComponent」。 – karfus
對我來說同樣重要......導出類後,「導出默認值」必須出現! – karfus
我再次編輯它。事實上,您需要將輸出行放在文件末尾,您可以擴展「InjectedIntlProps」而不是手動添加intl道具 – Emarco