首页 > 其他分享 >Uncaught Error: Objects are not valid as a React child (found: object with keys {content, key, durat

Uncaught Error: Objects are not valid as a React child (found: object with keys {content, key, durat

时间:2023-05-04 15:23:16浏览次数:54  
标签:meant react use React obj render 渲染 对象 content

转自:react报错 Uncaught Error: Objects are not valid as a React child (found: object with keys {a} ...

报错信息分析

Uncaught Error: Objects are not valid as a React child (found: object with keys {content, key, duration}). If you meant to render a collection of children, use an array instead.

意思是:未捕获错误:对象作为React子对象无效(找到:具有键{content,key,duration}的对象)。如果要呈现子对象集合,请改用数组。

原因一:想在react dom 里直接渲染对象

想在 render 函数里直接渲染对象类型的数据。但是在 react 语法设计里,数组和基本数据类型可以直接被渲染,但是不可以直接渲染对象类型。

案例

obj是一个对象 里面有a 属性,而我直接在 render 里 渲染了 obj 。正确的方式是渲染 obj.a ,react里要渲染对象 必须是 对象.属性形式(obj.key、obj[key])

class Index extends Component {
    constructor(props) {
        super(props);
        
    }
    componentDidMount() {
       
    }
    
    render() {
      let obj={ //一个对象  直接渲染就会出现
		  a:"00"
	  }
        return (
            <div>
              {obj}
            </div>
        )
    }
 
}

我的问题是表格的 columns 时,本来渲染的每一列都应该是基础类型,但是不小心渲染了一个对象类型,比如下面这个 message 列是一个对象(后端返回的message 字段一个对象形式,react 可以直接渲染数组和字符串,唯独不可以直接渲染对象),所以报了上面这个错。

[
{
 
 title:"rr",
 dataIndex:"message",
 align:"center"
}
]

造成这个错误的可能 不止这种情形 ,也可能其它原因,我遇到的是这种情形。

补充:react里可以直接渲染数组 只不过它会显示成一个字符串形式

例如:

class Index extends Component {
    state = {
     
    };
 
    componentDidMount() {
     
 
    }
    render() {
        let a=[1,3,4];
        let a1=["我","爱","你"];
        return (
            <div>
                  
                  <p>{a}</p>
                  <p>{a1}</p>
 
            </div>
        )
    }
}

效果如下:

解决方案:

避免直接渲染 Object 类型的数据 。比如上面的案例,需要从 obj 取出属性来渲染。

1.检查渲染的内容是否为对象:检查代码中是否存在直接将对象渲染到组件中的情况。如果存在,可以将对象转换为字符串或其他合法的 React 子元素再进行渲染。

2.使用 JSON.stringify() 方法将对象转换为字符串:如果需要在组件中渲染对象,可以使用 JSON.stringify() 方法将对象转换为字符串后再进行渲染

原因二:react set 状态时把对象类型赋值给了基础类型的状态

useState 状态里设置状态的初始值是基本数据类型,比如0,'dd' 等,但是 set 状态时赋值了一个对象

案例

const [dataType, setDataType] = useState(0); // dataType 这一状态在设置初始值时设置的是一个number类型的数据
const testObj = {
  0: 'zhangsan',
  1: 'lisi',
}
setDataType(testObj); // 想把对象类型的数据,赋值到一个 number 类型的状态里,引发报错

解决方案

检查状态的初始值设置是否正确,如果后续需要赋值为对象,需要赋初值为 {},如果确实是需要设置为基本数据类型,但是 set 状态错了,就考虑怎么改成只 set 基本数据类型到状态里。

————————————————
版权声明:本文为CSDN博主「崽崽的谷雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44058725/article/details/119951938

转自react报错 Uncaught Error: Objects are not valid as a React child (found: object with keys {a} ...

标签:meant,react,use,React,obj,render,渲染,对象,content
From: https://www.cnblogs.com/hi3254014978/p/17371336.html

相关文章

  • Nacos修改权重报错caused: errCode: 500, errMsg: do metadata operation failed ;caus
    今天修改Nacos权重时报错如下:caused:errCode:500, caused:errCode:500,errMsg:dometadataoperationfailed;caused:com.alibaba.nacos.con。解决方案:停掉nacos服务将nacos文件夹下data中的protocol文件夹删除重启nacos服务即可 ......
  • SpringSecurity过滤器之UsernamePasswordAuthenticationFilter
    UsernamePasswordAuthenticationFilter处理表单登录及认证。AbstractAuthenticationProcessingFilter#doFilterprivatevoiddoFilter(HttpServletRequestrequest,HttpServletResponseresponse,FilterChainchain) throwsIOException,ServletException{ if(!requires......
  • MySQL相互喜欢表,找出你喜欢我,我喜欢你的数据(我的userid, 你的userid)
    selectt1.self_user_id,t1.like_user_idfromsys_activity_user_liket1innerjoinsys_activity_user_liket2ont1.self_user_id=t2.like_user_idandt2.self_user_id=t1.like_user_idwheret1.self_user_id=1sql语句如上所示:从sys_activity_user_like这个......
  • PHP use 动态类
    本文主要和大家分享PHP新特性use加强使用,从同一namespace导入的类、函数和常量现在可以通过单个use语句一次性导入了。<?php//PHP7之前版本用法<?phpusesome\namespace\ClassA;usesome\namespace\ClassB;usesome\namespace\ClassCasC;usefunctionsome\name......
  • 关于Linux系统-sshd服务-AllowUsers与AllowGroups-选项的安全加固配置
    在一些Linux系统-sshd服务,的主配置文件,/etc/ssh/sshd_config 我们可能会看到配置有AllowUsers与AllowGroups的安全加固选项,关于两个选项的说明如下:从选项名称上就可以知道这两个是选项,是属于白名单选项的,在安全中,如果能使用白名单模式,肯定是更安全的这里我们先说一下 AllowU......
  • 【web 开发基础】PHP自定义回调函数之call_user_func_array()
    前言从上一篇文章中我们了解到,回调函数是将一个函数作为参数传递到调用的函数中。如果在函数的格式说明中出现callback类型的参数,则该函数就是回调函数。虽然可以使用变量函数去声明自己的回调函数,不过我们通常大多还是会通过借助 call_user_func_array() 函数去实现。通过借助......
  • Django框架——Q查询进阶、ORM查询优化、事务操作、字段类型、字段参数、Ajax、Conten
    Q查询进阶fromdjango.db.modelsimportQq_obj=Q()#1.产生q对象q_obj.connector='or'#默认多个条件的连接是and可以修改为orq_obj.children.append(('pk',1))#2.添加查询条件q_obj.children.append(('price__gt',2000))#支持添加多个res=models.Book.o......
  • ASP.NET Core User Secret & Azure Key Vault
    前言以前就写过很多篇了ASP.NETCore–Configuration&OptionsAsp.netcore学习笔记(Azurekey-vault)Asp.netcore学习笔记Secret和DataProtectAzurekey-vault&StorageAccount第2篇Azure入门系列(第四篇KeyVault)这篇作为最新最完整的版本呗. ......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅵ)
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数据......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅵ)
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数据......