En la función de render de mi componente tengo:
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>
);
}
todo funciona bien, sin embargo, al hacer clic en el <li>
elemento, recibo el siguiente error:
Error no detectado: Infracción invariable: los objetos no son válidos como React child (encontrado: objeto con claves {dispatchConfig, dispatchMarker, nativeEvent, target, currentTarget, type, eventPhase, bubbles, cancelable, timeStamp, defaultPrevented, isTrusted, view, detail, screenX , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, button, buttons, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Si tenía la intención de representar una colección de elementos secundarios, use una matriz en su lugar o ajuste el objeto usando createFragment (objeto) de los complementos React. Verifique el método de renderizado de
Welcome
.
Si cambio a this.onItemClick.bind(this, item)
que (e) => onItemClick(e, item)
dentro de las funciones todo funciona como se esperaba mapa.
Si alguien pudiera explicar lo que estoy haciendo mal y explicar por qué recibo este error, sería genial
ACTUALIZACIÓN 1: la
función onItemClick es la siguiente y al eliminar this.setState se produce la desaparición del error.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Pero no puedo eliminar esta línea ya que necesito actualizar el estado de este componente
this.onItemClick
se implementa?