Dans la fonction de rendu de mon composant, j'ai:
render() {
const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
return (<li onClick={this.onItemClick.bind(this, item)} key={item}>{item}</li>);
});
return (
<div>
...
<ul>
{items}
</ul>
...
</div>
);
}
tout se passe bien, cependant en cliquant sur le <li>
élément, je reçois l'erreur suivante:
Erreur non détectée: violation invariante: les objets ne sont pas valides en tant qu'enfant React (trouvé: objet avec clés {dispatchConfig, dispatchMarker, nativeEvent, target, currentTarget, type, eventPhase, bubble, cancelable, timeStamp, defaultPrevented, isTrusted, view, detail, screenX , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, bouton, boutons, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Si vous vouliez rendre une collection d'enfants, utilisez plutôt un tableau ou encapsulez l'objet à l'aide de createFragment (objet) à partir des modules complémentaires React. Vérifiez la méthode de rendu de
Welcome
.
Si je change pour this.onItemClick.bind(this, item)
à l' (e) => onItemClick(e, item)
intérieur de la fonction de carte tout fonctionne comme prévu.
Si quelqu'un pouvait expliquer ce que je fais mal et expliquer pourquoi j'obtiens cette erreur, ce serait bien
MISE À JOUR 1: la
fonction onItemClick est la suivante et la suppression de this.setState entraîne la disparition de l'erreur.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Mais je ne peux pas supprimer cette ligne car j'ai besoin de mettre à jour l'état de ce composant
this.onItemClick
est mis en œuvre?