对象作为 React 子对象无效(找到:带键的对象)。如果您打算渲染一组孩子,请改用数组

Posted

技术标签:

【中文标题】对象作为 React 子对象无效(找到:带键的对象)。如果您打算渲染一组孩子,请改用数组【英文标题】:Objects are not valid as a React child (found: object with keys). If you meant to render a collection of children, use an array instead 【发布时间】:2021-11-18 18:17:19 【问题描述】:
constructor(props) 
        super(props);
        this.state = 
            message: []
        ;
    

    async getData() 
        await axios.get("https:...")
        .then((response) => 
            console.log((response));
            console.log(typeof(response)); // object
            const convertString = JSON.parse(response.data.body);
            this.setState(message: convertString);
            console.log(convertString));
        )
    

    componentDidMount() 
        this.getData();
    

    render() 
        const obj = (this.state.message);
        console.log(obj);
        return(
            <div>
                this.state.message
            </div>
        )

我收到错误消息:“错误:对象作为 React 子项无效(找到:带有键 Items, Count, ScannedCount 的对象)。如果您要渲染一组子项,请改用数组。”

console.log(convertString) 给了我这个:

Items: Array(4)
0: key1: "value", key2: "value"
1: key1: "value", key2: "value"
2: key1: "value", key2: "value"
3: key1: "value", key2: "value"

如果我想以表格格式呈现数组,我应该如何通过 this.setState() 传递数据?

【问题讨论】:

【参考方案1】:

如您所见,您的响应是一个对象数组。例如,您必须通过该数组循环抛出以正确显示数据。

    render() 
      return(
        <div>
            this.state.message.map((item,i) => (
              <div key=i> 
               <div>item.key1</div>
               <div>item.key2</div>
              </div>
            )
        </div>
      )
    

在 this.state.message.map 方法中,您在消息数组中循环抛出(包含 4 个对象),并且每个(项目)都有您要显示的属性。

【讨论】:

我收到错误:this.state.message.map 不是函数 你删除了 render() 之后的两行吗?常量 obj = (this.state.message); console.log(obj); 有或没有 2 行我得到同样的错误 替换你的 .then 行.. 直到 console.log(convertString) 用那个..then((response) => response.json()) .then(messageList=> this. setState( message: messageList);

以上是关于对象作为 React 子对象无效(找到:带键的对象)。如果您打算渲染一组孩子,请改用数组的主要内容,如果未能解决你的问题,请参考以下文章

对象作为 React 子对象无效(找到:带键的对象$$typeof,render)。如果您要渲染子对象的集合,请改用数组

对象作为 React 子对象无效(找到:带键的对象)。如果您打算渲染一组孩子,请改用数组

React native - 对象作为 React 子对象无效(发现:带有键的对象 $$typeof, type, key, ref, props, _owner, _store)

错误:对象作为 React 子项无效(找到:带有键 的对象)。改用数组

错误:对象作为 React 子对象无效(找到:带有键 low, high 的对象)

错误:对象作为 React 子项无效(找到:带有键 的对象)。如果您打算渲染一组孩子,请改用数组