gpt4 book ai didi

javascript - 不变违规 : Objects are not valid as a React child

转载 作者:IT老高 更新时间:2023-10-28 13:11:48 25 4
gpt4 key购买 nike

在我的组件的渲染函数中,我有:

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>
);
}

一切都很好,但是当单击 <li> 时元素我收到以下错误:

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.

如果我改为 this.onItemClick.bind(this, item)(e) => onItemClick(e, item)在 map 函数中,一切都按预期工作。

如果有人能解释我做错了什么并解释为什么我会得到这个错误,那就太好了

更新 1:
onItemClick函数如下,去掉this.setState导致错误消失。

onItemClick(e, item) {
this.setState({
lang: item,
});
}

但我无法删除此行,因为我需要更新此组件的状态

最佳答案

我遇到了这个错误,结果是我无意中在我的 JSX 代码中包含了一个我原以为是字符串值的对象:

return (
<BreadcrumbItem href={routeString}>
{breadcrumbElement}
</BreadcrumbItem>
)

breadcrumbElement 曾经是一个字符串,但由于重构已成为一个对象。不幸的是,React 的错误消息并没有很好地将我指向存在问题的行。我必须一直跟踪我的堆栈跟踪,直到我识别出“ Prop ”被传递到组件中,然后我发现了有问题的代码。

您需要引用作为字符串值的对象的属性,或者将对象转换为所需的字符串表示形式。如果您真的想查看对象的内容,一个选项可能是 JSON.stringify

关于javascript - 不变违规 : Objects are not valid as a React child,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33117449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com