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>
);
}
IntlShapeがFORMATMESSAGE方法を提供しているようだしなかったので、私は、国際小道具の種類としてInjectedIntlPropsを使用しました。
私は?私は "Property 'intl'が存在しないためにintl propを使用していました。(しかし、このpropを持たないコンポーネントを返すのはinjectIntlではありません)
これはコンパイルされますが、未定義のプロパティ 'displayName'を読み取ることはできません "デフォルトのエクスポートには明示的な名前がないので推測します。
私は正しい方向に行かないと思っていますが、typescript/react-intlプロジェクトの例は見つかりません。
ありがとうございました!
のdidn:何の小道具がない場合
が、それは若干変更する必要があります
それを修正するために、私は明示的に何が包まれたコンポーネントが持つべき小道具
injectIntl
を教えていました私のために働く...しかし、 "React.Component"を "React.PureComponentを拡張する"に変更しました。 – karfusまた、私にとって重要なのは...「輸出のデフォルト」は輸出されたクラスの後に来なければなりません! – karfus
私は再びそれを編集しました。実際には、ファイルの最後にエクスポート行を置く必要があり、手動でintl小道具を追加する代わりに "InjectedIntlProps"を拡張することができます – Emarco