Na função de renderização do meu componente, tenho:
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>
);
}
tudo fica bem, no entanto, ao clicar no <li>
elemento, recebo o seguinte erro:
Erro não capturado: Violação invariável: os objetos não são válidos como um filho de React (encontrado: objeto com chaves {dispatchConfig, dispatchMarker, nativeEvent, target, currentTarget, tipo, eventPhase, bolhas, cancelável, timeStamp, defaultPrevented, isTrusted, exibição, detalhe, screenX , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, botão, botões, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Se você pretendia render uma coleção de filhos, use uma matriz ou agrupe o objeto usando createFragment (object) nos complementos do React. Verifique o método de renderização de
Welcome
.
Se eu mudar para this.onItemClick.bind(this, item)
a (e) => onItemClick(e, item)
dentro dos tudo funciona função de mapa como esperado.
Se alguém pudesse explicar o que estou fazendo de errado e explicar por que recebo esse erro, seria ótimo
ATUALIZAÇÃO 1: a
função onItemClick é a seguinte e a remoção de this.setState resulta no desaparecimento do erro.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Mas não consigo remover esta linha, pois preciso atualizar o estado desse componente
this.onItemClick
é implementado?