我是新手,如果有人能解释这个问题就好了,这个问题已经回答了,但我还是很困惑。
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子对象无效(找到:带键{}的对象)。如果要呈现子集合,请改为使用数组。
你没有考虑正确的反应。
好友数据来自一些外部来源。您将在组件中使用它。
这里有两个主要组件。
每个组件需要不同的数据才能正常工作。当您将朋友数组提供给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);
Cardcomponent
是一个组件列表。因此,要显示它们,正如错误消息告诉您的,您必须使用map
{Cardcomponent.map((component, index) => {
return (
<div key={index}>
{component}
</div>
)
}
当我将{}添加到我的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上的应用程序。 复制步骤- 在搜索栏中搜索现