【问题标题】:Objects are not valid as a React child (found: object with keys {name}). If you meant to render a collection of children, use an array instead对象作为 React 子级无效(找到:带有键 {name} 的对象)。如果您打算渲染一组孩子,请改用数组
【发布时间】:2021-09-28 11:06:22
【问题描述】:

我在我的表格中发布数据列表时遇到问题,我希望你们能帮助我解决这个问题,这是我得到的错误 错误:对象作为 React 孩子无效(找到: 带有键 {name} 的对象)。如果您打算渲染一组子项,请改用数组。

  const columns = [
    {
     name: "name",
     label: "Name",
     options: {
      filter: true,
      sort: true,
     }
    },
    {
     name: "dateregistered",
     label: "Date Registered",
     options: {
      filter: true,
      sort: false,
     }
    },
    {
     name: "department",
     label: "Department",
     options: {
      filter: true,
      sort: false,
     }
    },

   ];
   
   const data = [

      posts.map(post => [{name: 'post.firstname', dateregistered: 'post.date', department: 'post.department'}])
    
       ];

  return (
    <>
        <MUIDataTable
          title={"Deactivated Users"}
          data={data}
          columns={columns}
          options={options}
        />
    </>
  )

【问题讨论】:

  • 也许可以试试const data = posts.map(post =&gt; ...)?我认为问题在于您将一个数组嵌套在另一个数组中。
  • 我得到同样的错误
  • 我删除了const data = []
  • @juanireyes 伙计,你是个天才,谢谢!你能发表你的答案吗?

标签: reactjs axios


【解决方案1】:

我在您的 data 常量中发现了两个问题。第一个,.map 方法返回一个数组,因此无需将该值包装在数组键 [] 中。另一个问题是您也将.map 返回状态对象包装在数组键中,这就是显示创建对象错误的原因,因为您在主映射数组[[{ name: ... }], [{ name: ... }]] 中返回数组。

所以基本上你的问题的解决方案是:

const data = posts.map(post => ({name: 'post.firstname', dateregistered: 'post.date', department: 'post.department'})) 

其中括号允许map方法直接返回对象。

【讨论】:

    【解决方案2】:

    问题是数据被创建为数组中的数组中的数组。这就是为什么当您尝试const data = posts.map(post =&gt; ...) 时错误仍然存​​在,因为数组中仍然存在数组。试了以上方法后,也重新写

    post => [{name: 'post.firstname', dateregistered: 'post.date', department: 'post.department'}]
    

    post => ({name: 'post.firstname', dateregistered: 'post.date', department: 'post.department'})
    

    (将方括号改为圆)

    P.S 当您映射帖子以构建数据时,您构建了一个具有键“name”和值“'post.firstname'”的对象。该值是一个字符串文字,并且不访问其他一些 JS 对象(它将使“post.firstname”成为所有帖子的值。其他键也是如此。

    【讨论】:

    • 抱歉,好像我迟到了一分钟!
    • 虽然没有实现嵌套的字符串值,但做得很好。
    猜你喜欢
    • 1970-01-01
    • 2019-10-12
    • 2020-10-18
    • 2021-11-18
    • 1970-01-01
    • 2021-04-19
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多