当前位置: 首页 > 知识库问答 >
问题:

对象作为React子对象无效(找到:具有键{}的对象)。如果要呈现子对象集合,请改用数组

苏伟志
2023-03-14

我是新手,如果有人能解释这个问题就好了,这个问题已经回答了,但我还是很困惑。

import React from 'react' ; 
import Card from './Card.js';
const CardList = ({Friends}) =>{
    const Cardcomponent = Friends.map((user , i) => {
        return(
            <div>
                 <Card id={Friends[i].id} name={Friends[i].name} username={Friends[i].username} instagram={Friends[i].instagram}  />
            </div>
              )
    })
return(
          <div>
                {Cardcomponent}
          </div>
      )
} 
export default CardList ;

对象作为React子对象无效(找到:带键{}的对象)。如果要呈现子集合,请改为使用数组。

共有3个答案

徐洛华
2023-03-14

你没有考虑正确的反应。

好友数据来自一些外部来源。您将在组件中使用它。

这里有两个主要组件。

  • 卡片:显示单个用户的数据

每个组件需要不同的数据才能正常工作。当您将朋友数组提供给CardList时,您只希望它为列表中的每个朋友元素呈现一个Card组件。

React负责幕后的所有DOM操作,因此需要确保屏幕上的每个元素都可以唯一标识。这就是为什么我们有时需要帮助它,当我们知道一个组件可能有很多键时,告诉它使用什么键。

Card组件只需要关于一个朋友的信息,所以这就是我们从CardList中提供的全部信息。

请注意,卡片未在CardList中定义,CardList未在应用程序中定义。这允许我们在其他地方重用这些组件。

对此还有很多要说的,但希望这能有所帮助。

以下是一个示例应用程序:

import React from "react";
import ReactDOM from "react-dom";

const Card = ({ friend, id, name, username, instagram }) => (
  <div>
    <ul>
      <li>id: {id}</li>
      <li>name: {name}</li>
      <li>username: {username}</li>
      <li>instagram: {instagram}</li>
    </ul>
  </div>
);

const CardList = ({ friends }) => (
  <div>
    {friends.map(friend => <Card key={friend.id} {...friend} />)}
  </div>
);

function App() {
  const friends = [
    { id: 1, name: "John Smith", username: "jsmith", instagram: "N/A" },
    { id: 2, name: "Mary Jane", username: "mjane", instagram: "puppyLover" },
    {
      id: 3,
      name: "Harry Potter",
      username: "hpotter",
      instagram: "best_wizard"
    }
  ];
  return (
    <div className="App">
      <CardList friends={friends} />
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
从劲
2023-03-14

Cardcomponent是一个组件列表。因此,要显示它们,正如错误消息告诉您的,您必须使用map

{Cardcomponent.map((component, index) => {
  return (
    <div key={index}>
      {component}
    </div>
  )
}
洪飞驰
2023-03-14

当我将{}添加到我的Card.js文件(其他一些文件)的属性中时,问题在另一个文件中的函数使用的道具上得到了解决

   const Card = ( id , email , name ) => { return( ...
                                             ....);
      to 
   const Card = ( {id , email , name} ) => { return( ...
                                                     ...);

这个答案帮助我找到了解决方案https://stackoverflow.com/a/33577681/11556916

 类似资料:
  • 问题内容: 我正在使用Rails后端设置一个React应用程序。我收到错误消息“对象作为React子对象无效(找到:带有键{id,name,info,created_at,updated_at}的对象)。如果要渲染子代的集合,请改用数组。” 这是我的数据: 我的代码如下: 我究竟做错了什么? 问题答案: 您的数据是一个数组,因此必须使用Array.prototype.map()遍历该数组才能起作用

  • 问题内容: 我正在尝试通过数组映射来呈现帖子列表。我已经做过很多次了,但有一些 我得到的是: 未捕获的错误:对象作为React子对象无效(找到:[object Promise])。如果要渲染子级集合,请改用数组。 我检查了renderPosts返回的数据,它是一个具有正确值且没有承诺的数组。这里发生了什么? 问题答案: 将返回非实际数据,并且AFAIK Reactjs将不会在中隐式解析Promis

  • 问题内容: 请帮我。我不知道为什么这段代码不起作用。 它给我一个错误:“对象作为React子对象无效(找到:带有键{itemss}的对象)。如果要渲染子对象的集合,请改用数组。” 为什么{i.title}是对象。这只是一个字符串。我怎样才能解决这个问题?以及实际上如何迭代嵌套对象? 问题答案: 问题是因为你回来了 这是的等效即 您将返回具有键和的对象。你可以写 要么 要么 PS请注意,前两种方法将

  • 问题内容: 我是React Native的新手,并且在下面引用了一个错误: 对象作为React子对象无效(找到:带有键{$$ typeof,type,key,ref,props,_owner,_store}的对象)。如果要渲染子级集合,请改用数组。 这是我的整个代码,除了样式外,还包含在组件文件中: 我很困惑如何解决该问题。提前致谢。 问题答案: 试试这个: 从App.js中删除firebase导

  • 问题内容: 我正在尝试使用用户代理将json设置为一种状态,但出现错误: 未捕获的不变违规:对象作为React子对象无效(找到:具有键{…}的对象)。如果您打算渲染孩子的集合,请使用数组代替,或者使用React附加组件中的createFragment(object)包装对象。 设置状态的方法: 服务 杰森 问题答案: 您无法执行此操作:由于您的错误提示您尝试执行的操作无效。您正在尝试将整个数组呈现

  • 我正在React中制作一个RecipeBox应用程序,在我尝试实现搜索功能之前,它运行良好。一旦用户在搜索栏中输入搜索项,就会抛出错误。此方法中的块抛出错误- 这是错误消息- 控制台显示- 这表明是一个包含对象的数组。但是会抛出错误- 有趣的是,如果我删除搜索栏功能并完全删除else块,相同的语句就可以正常工作,不会抛出任何错误- 这是我在Codepen上的应用程序。 复制步骤- 在搜索栏中搜索现