Nella funzione di rendering del mio componente ho:
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>
);
}
tutto viene <li>
visualizzato correttamente , tuttavia quando si fa clic sull'elemento viene visualizzato il seguente errore:
Errore non rilevato: violazione invariante: gli oggetti non sono validi come figlio React (trovato: oggetto con chiavi {dispatchConfig, dispatchMarker, nativeEvent, target, currentTarget, tipo, eventPhase, bolle, annullabile, timeStamp, defaultPrevented, isTrusted, view, detail, screenX , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, pulsante, pulsanti, relativiTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Se intendevi eseguire il rendering di una raccolta di elementi secondari, utilizza invece un array o avvolgi l'oggetto utilizzando createFragment (oggetto) dai componenti aggiuntivi di React. Controlla il metodo di rendering di
Welcome
.
Se cambio al this.onItemClick.bind(this, item)
di (e) => onItemClick(e, item)
dentro il tutto funziona mappa funzionare come previsto.
Se qualcuno potesse spiegare cosa sto facendo di sbagliato e spiegare perché visualizzo questo errore, sarebbe fantastico
AGGIORNAMENTO 1: la
funzione onItemClick è la seguente e la rimozione di this.setState provoca la scomparsa dell'errore.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Ma non riesco a rimuovere questa linea poiché devo aggiornare lo stato di questo componente
this.onItemClick
viene implementato?