【问题标题】:Getting Error: Objects are not valid as React child出现错误:对象作为 React 子对象无效
【发布时间】:2020-02-02 22:01:58
【问题描述】:

issueList 数组元素的截图,它是一个对象。

import React from 'react';

const IssueList = (props)=>{
    const issues = props.issueList.map((issue)=>{
        return (
            <div key={issue.id}>
                <span>
                    <p><strong>Issue Title: </strong>{issue.title}   </p>
                    <p>   <strong>Created By : </strong>{issue.user["login"]}</p>
                </span>   
                <p><strong>Assigned to: </strong>{issue.assignee}</p>
                <p><strong>Issue Description: </strong>{issue.body}</p>
            </div>
        )

    });

    return <div>{issues}</div>;
}

我正在尝试使用我的 issueList 对象数组中的一些信息来渲染一个 div。 上面的代码产生以下错误:

Error: Objects are not valid as a React child (found: object with keys {login, id, node_id, avatar_url, gravatar_id, url, html_url, followers_url, following_url, gists_url, starred_url, subscriptions_url, organizations_url, repos_url, events_url, received_events_url, type, site_admin}). If you meant to render a collection of children, use an array instead.
    in p (at IssueList.js:12)
    in div (at IssueList.js:7)
    in div (at IssueList.js:19)

issueList 是一个对象数组

【问题讨论】:

  • 您的价值观之一是对象。如果没有看到您的问题对象之一的示例,我们无法告诉您哪个,但您需要在某处访问嵌套属性,例如 issue.body.descriptionissue.assignee.login
  • 您可以在屏幕截图中看到问题。issue.assignee 是一个对象
  • 谢谢,@azium..真的很沮丧,没看到。

标签: node.js reactjs jsx react-component


【解决方案1】:

因此,您有一个 issueList 数组,您希望将其呈现为组件列表(假设为 IssueList)。假设您的问题设置如下

issue = {
  id: "ID string",
  title: "Title",
  user: "User name",
  assignee: "Asignee name",
  body: "body string ..... "
}

你可以先设置你的IssueList组件如下

const IssueList = ({ issueList }) => (
  <div>
  {
    issueList.map((issue) => (
      <div key={issue.id}>
        <span>
           <p><strong>Issue Title: </strong>{issue.title}   </p>
           <p>   <strong>Created By : </strong>{issue.user}</p>
        </span>
        <p><strong>Assigned to: </strong>{issue.assignee}</p>
        <p><strong>Issue Description: </strong>{issue.body}</p>
      </div>
    )
  }
  </div>
)

现在您可以在任何地方使用您的IssueList

【讨论】:

  • 请阅读我的回答中issue 对象的定义。由于您没有提供任何 issue 对象键和相应值的定义。我定义了一个简单的issue。请注意,issue 中的所有值都是字符串而不是对象。
  • 正如@azium 指出的那样。您的 assignee 键有一个对象作为值,因此您需要访问您打算使用的特定键。
猜你喜欢
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 2018-11-12
  • 1970-01-01
  • 2021-04-06
  • 2021-08-20
相关资源
最近更新 更多