错误提示:不可以在React中使用对象作为子元素。

19 浏览
0 Comments

错误提示:不可以在React中使用对象作为子元素。

在我的组件的 render 函数中,我有以下内容:

render() {
    const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
      return (
  • {item}

); }); return ( ...

    {items}

... ); }

一切都正常地渲染,然而当点击

  • 元素时,我会收到以下错误:

    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),一切都按预期工作。

    如果有人能解释我做错了什么以及为什么会出现这个错误,那将会是很好的。

    UPDATE 1:

    onItemClick 函数如下所示,删除 this.setState 后错误消失。

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

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

admin 更改状态以发布 2023年5月22日
0
0 Comments

当我尝试显示一个Date对象的createdAt属性时,我遇到了这个错误。如果在末尾拼接.toString(),它将进行转换并消除错误。只是将其作为一个可能的答案发布,以防其他人遇到了同样的问题:

{this.props.task.createdAt.toString()}

0
0 Comments

我遇到了这个错误,原来是我在JSX代码中无意中包含了一个Object,而我本来期望它是一个字符串值:

return (
    
        {breadcrumbElement}
    
)

breadcrumbElement以前是一个字符串,但由于重构已变成了一个Object。不幸的是,React的错误信息没有很好地指出问题存在的行。我必须一路跟踪我的堆栈跟踪,直到我认出了传递给一个组件的"props",然后我找到了有问题的代码。

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

0