Je voudrais utiliser la fonction formatMessage de l'API react-intl pour insérer un message comme espace réservé, mais je n'arrive pas à trouver le bon moyen d'accéder à cette fonction.React-intl, utiliser api avec Typescript
Voici une version simplifiée de ce que j'ai:
//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>
);
}
je InjectedIntlProps que le type de l'hélice intl, parce IntlShape n'a pas semble offrir une méthode de formatMessage.
J'ai ajouté un? au intl prop parce que j'ai gardé une "propriété 'intl' est manquante" (mais injectIntl n'est pas censé retourner un composant sans ce prop?)
Maintenant, il compile, mais en cours d'exécution, je reçois une erreur (" Impossible de lire la propriété 'displayName' de undefined "Je suppose que l'exportation par défaut n'a pas de nom explicite).
Je pense que je ne vais pas dans la bonne direction, mais je ne trouve pas d'exemple de projet de type/response-intl.
Merci pour votre aide!
Didn » t travail pour moi ... mais en changeant "extends React.Component" à "extends React.PureComponent" fait. – karfus
Aussi important pour moi ... le "export par défaut" doit venir * après * la classe exportée! – karfus
Je l'ai édité encore. En effet, vous devez placer la ligne d'export à la fin du fichier, et vous pouvez étendre "InjectedIntlProps" au lieu d'ajouter manuellement les accessoires intl – Emarco