W funkcji renderowania mojego komponentu mam:
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>
);
}
wszystko renderuje się dobrze, jednak po kliknięciu <li>
elementu pojawia się następujący błąd:
Nieprzechwycony błąd: Niezmienne naruszenie: Obiekty nie są poprawne jako dziecko React (znaleziono: obiekt z kluczami {dispatchConfig, dispatchMarker, nativeEvent, target, currentTarget, typ, eventPhase, bąbelki, można anulować, timeStamp, defaultPrevented, isTrusted, widok, szczegół, screenX , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, przycisk, przyciski, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Jeśli chcesz wyrenderować kolekcję dzieci, użyj zamiast tego tablicy lub zawiń obiekt za pomocą createFragment (obiektu) z dodatków React. Sprawdź metodę renderowania dla
Welcome
.
Jeśli zmienię się this.onItemClick.bind(this, item)
do (e) => onItemClick(e, item)
wewnątrz funkcji map wszystko działa zgodnie z oczekiwaniami.
Gdyby ktoś mógł wyjaśnić, co robię źle i wyjaśnić, dlaczego dostaję ten błąd, byłoby świetnie
AKTUALIZACJA 1:
Funkcja onItemClick jest następująca, a usunięcie this.setState powoduje zniknięcie błędu.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Ale nie mogę usunąć tej linii, ponieważ muszę zaktualizować stan tego komponentu
this.onItemClick
jest wdrażany?