W uczynić funkcji mojego komponentu mam:Inwariant Naruszenie: Obiekty nie są ważne jako React dziecko
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 czyni dobrze, jednak po kliknięciu elementu <li>
I pojawia się następujący błąd:
Uncaught Error: Invariant Violation: Objects are not valid as a React child (found: object with keys {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}). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons. Check the render method of
Welcome
.
Jeśli zmienię na this.onItemClick.bind(this, item)
na (e) => onItemClick(e, item)
w funkcji mapy wszystko działa zgodnie z oczekiwaniami.
Jeśli ktoś mógłby wyjaśnić, co robię źle i wyjaśnić dlaczego ten błąd, byłoby świetnie
UPDATE 1:
funkcja onItemClick jest następujący i usuwanie this.setState wyniki w błędzie znika.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Ale nie mogę usunąć tę linię jako muszę zaktualizować stan tego składnika
W jaki sposób implementuje się 'this.onItemClick'? – zerkms
@zerkms Dzięki za odpowiedź, zaktualizowałem pytanie, i tak wydaje się, że problem jest w this.setState(), ale dlaczego rzuca ten błąd? :( – Nomad
Czy jest błąd składniowy w setState? Dodatkowy przecinek? Może nie naprawić błędu, ale po prostu go znaleźć –