Objects are not valid as a React child. If you meant to render a collection of children, use an array instead(对象作为 React 子级无效.如果您打算渲染一组孩子,请改用数组)
问题描述
I am setting up a React app with a Rails backend. I am getting the error "Objects are not valid as a React child (found: object with keys {id, name, info, created_at, updated_at}). If you meant to render a collection of children, use an array instead."
This is what my data looks like:
[
    {
        "id": 1,
        "name": "Home Page",
        "info": "This little bit of info is being loaded from a Rails 
        API.",
        "created_at": "2018-09-18T16:39:22.184Z",
        "updated_at": "2018-09-18T16:39:22.184Z"
    }
]
My code is as follows:
import React from 'react';
class Home extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      error: null,
      isLoaded: false,
      homes: []
    };
  }
  componentDidMount() {
    fetch('http://localhost:3000/api/homes')
      .then(res => res.json())
      .then(
        (result) => {
          this.setState({
            isLoaded: true,
            homes: result
          });
        },
        // error handler
        (error) => {
          this.setState({
            isLoaded: true,
            error
          });
        }
      )
  }
  render() {
    const { error, isLoaded, homes } = this.state;
    if (error) {
      return (
        <div className="col">
          Error: {error.message}
        </div>
      );
    } else if (!isLoaded) {
      return (
        <div className="col">
          Loading...
        </div>
      );
    } else {
      return (
        <div className="col">
          <h1>Mi Casa</h1>
          <p>This is my house y'all!</p>
          <p>Stuff: {homes}</p>
        </div>
      );
    }
  }
}
export default Home;
What am I doing wrong?
Your data homes is an array, so you would have to iterate over the array using Array.prototype.map() for it to work.
return (
    <div className="col">
      <h1>Mi Casa</h1>
      <p>This is my house y'all!</p>
      {homes.map(home => <div>{home.name}</div>)}
    </div>
  );
这篇关于对象作为 React 子级无效.如果您打算渲染一组孩子,请改用数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:对象作为 React 子级无效.如果您打算渲染一组孩子,请改用数组
				
        
 
            
        - 如何调试 CSS/Javascript 悬停问题 2022-01-01
 - 是否可以将标志传递给 Gulp 以使其以不同的方式 2022-01-01
 - 使用 iframe URL 的 jQuery UI 对话框 2022-01-01
 - 我不能使用 json 使用 react 向我的 web api 发出 Post 请求 2022-01-01
 - 在不使用循环的情况下查找数字数组中的一项 2022-01-01
 - 从原点悬停时触发 translateY() 2022-01-01
 - 为什么悬停在委托事件处理程序中不起作用? 2022-01-01
 - 如何显示带有换行符的文本标签? 2022-01-01
 - 为什么我的页面无法在 Github 上加载? 2022-01-01
 - 如何向 ipc 渲染器发送添加回调 2022-01-01
 
						
						
						
						
						
				
				
				
				