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报错 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} ...