In der Renderfunktion meiner Komponente habe ich:
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>
);
}
Alles wird gut, aber wenn Sie auf klicken <li>
ich Element klicke, erhalte ich die folgende Fehlermeldung:
Nicht erfasster Fehler: Invariante Verletzung: Objekte sind als untergeordnetes Reagieren nicht gültig (gefunden: Objekt mit Schlüsseln {dispatchConfig, dispatchMarker, nativeEvent, Ziel, aktuelles Ziel, Typ, eventPhase, Blasen, stornierbar, Zeitstempel, defaultPrevented, isTrusted, Ansicht, Detail, screenX , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, Schaltfläche, Schaltflächen, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Wenn Sie eine Sammlung von untergeordneten Elementen rendern möchten, verwenden Sie stattdessen ein Array oder schließen Sie das Objekt mit createFragment (Objekt) aus den React-Add-Ons ein. Überprüfen Sie die Rendermethode von
Welcome
.
Wenn ich zu wechsle this.onItemClick.bind(this, item)
, um (e) => onItemClick(e, item)
innerhalb der Map - Funktion funktioniert alles wie erwartet.
Wenn jemand erklären könnte, was ich falsch mache und warum ich diesen Fehler bekomme, wäre das großartig
UPDATE 1:
Die Funktion onItemClick lautet wie folgt : Wenn Sie this.setState entfernen, verschwindet der Fehler.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Ich kann diese Zeile jedoch nicht entfernen, da ich den Status dieser Komponente aktualisieren muss
this.onItemClick
wird das umgesetzt?