当前位置: 首页 > 知识库问答 >
问题:

不变冲突:对象作为React子级无效

夏侯涵映
2023-03-14

在组件的呈现函数中,我有:

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

所有内容都显示良好,但单击

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

    未捕获得错误:不变冲突:对象作为React子级无效(找到:具有键得对象{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,如果您打算呈现子级集合,请使用数组,或者使用React加载项中的createFragment(object)包装对象。检查welcome的render方法。

    如果我将this.onItemClick.bind(this,item)更改为(e)=>onItemClick(e,item)html" target="_blank">map函数内部,所有工作都按预期进行。

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

    更新1:
    onItemClick函数如下所示,删除This.SetState将导致错误消失。

    onItemClick(e, item) {
        this.setState({
          lang: item,
        });
    }
    
  • 共有1个答案

    司寇高洁
    2023-03-14

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

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

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

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

     类似资料:
    • 我试图实现一个简单的功能,的一个按钮,它应该添加放置数组并显示在视图中,但我似乎得到了一个错误,请帮助 这是我的代码, 这是我得到的错误, 我是个新来的土生土长的人,所以我对此一无所知。

    • 我有以下代码: 但我得到了以下错误: 未捕获的不变违规:对象作为React子对象无效(找到:带有键{正文、附件、视频、主题、updated_at、id、主题、反对票、作者、posted_at、注释、user_vote、好评、状态、标签、位置、track_impact、user_is_following、comments_count}的对象)。如果要呈现子集,请使用数组来代替,或者使用React加载

    • 我正在React中制作一个RecipeBox应用程序,在我尝试实现搜索功能之前,它运行良好。一旦用户在搜索栏中输入搜索项,就会抛出错误。此方法中的块抛出错误- 这是错误消息- 控制台显示- 这表明是一个包含对象的数组。但是会抛出错误- 有趣的是,如果我删除搜索栏功能并完全删除else块,相同的语句就可以正常工作,不会抛出任何错误- 这是我在Codepen上的应用程序。 复制步骤- 在搜索栏中搜索现

    • 问题内容: 请帮我。我不知道为什么这段代码不起作用。 它给我一个错误:“对象作为React子对象无效(找到:带有键{itemss}的对象)。如果要渲染子对象的集合,请改用数组。” 为什么{i.title}是对象。这只是一个字符串。我怎样才能解决这个问题?以及实际上如何迭代嵌套对象? 问题答案: 问题是因为你回来了 这是的等效即 您将返回具有键和的对象。你可以写 要么 要么 PS请注意,前两种方法将

    • 问题内容: 我正在尝试使用用户代理将json设置为一种状态,但出现错误: 未捕获的不变违规:对象作为React子对象无效(找到:具有键{…}的对象)。如果您打算渲染孩子的集合,请使用数组代替,或者使用React附加组件中的createFragment(object)包装对象。 设置状态的方法: 服务 杰森 问题答案: 您无法执行此操作:由于您的错误提示您尝试执行的操作无效。您正在尝试将整个数组呈现