![](/img/trans.png)
[英]how to display information by props from an array of objects in a component in React JS
[英]React JS - How to display objects from an array?
我是 JS 和 React 的新手,所以我有一个简单的问题:我有一个包含对象的数组。 如何显示/渲染所有这些对象及其属性? 稍后我需要它用于列表/卡片。 “地图”也许? 预先感谢您对我们的支持!
import React from 'react';
import logo from './logo.svg';
import './App.css';
const champions = [
{
champName: 'Ivan Ivanov',
sport: 'weightlifting',
games: 'Barcelona 1992',
},
{
champName: 'Ekaterina Dafovska',
sport: 'biathlon',
games: 'Nagano 1998',
},
];
function App() {
return (
<div>
{champions.map((champions) => (
<div
name={champions.champName}
sport={champions.sport}
games={champions.games}
/>
</div>
);
}
export default App;
我假设您希望您的冠军信息可见。
(因为 '<div name={champion.name}>' 不会呈现任何对屏幕可见的东西......只需将具有该值的属性添加到您的 div)
你可以做这样的事情。
import React from 'react';
import logo from './logo.svg';
import './App.css';
const champions = [
{
champName: 'Ivan Ivanov',
sport: 'weightlifting',
games: 'Barcelona 1992',
},
{
champName: 'Ekaterina Dafovska',
sport: 'biathlon',
games: 'Nagano 1998',
},
];
// Create this component to render a single champion
function Champion({champion}) {
return (
<div>
<div>Name: {champion.champName}</div>
<div>Sport: {champion.sport}</div>
<div>Games: {champion.games}</div>
</div>
)
}
function App() {
return (
<div>
{
champions.map((champion) => <Champion champion={champion} />)
}
</div>
);
}
export default App;
回顾:
编辑
创建一个组件是完全可选的,但是在你的情况下有一个组件可以用来分离关注点......
你可以在你的模板中做到这一点......
以下示例具有完全相同的结果(我在此处仅包含 App 函数作为一个简单的帖子)
function App() {
return (
<div>
{
/* We can do it right here as well, without a dedicated
component */
champions.map((champion) => (
<div>
<div>Name: {champion.champName}</div>
<div>Sport: {champion.sport}</div>
<div>Games: {champion.games}</div>
</div>
))
}
</div>
);
}
你快到了,你只是缺少一些括号和结束标签。
import React from 'react';
import logo from './logo.svg';
import './App.css';
const champions = [
{
champName: 'Ivan Ivanov',
sport: 'weightlifting',
games: 'Barcelona 1992',
},
{
champName: 'Ekaterina Dafovska',
sport: 'biathlon',
games: 'Nagano 1998',
},
];
function App() {
return (
<div>
{champions.map((champions) => (
<div>
name={champions.champName}
sport={champions.sport}
games={champions.games}
</div>
))}
</div>
);
}
export default App;
在您的代码中,您将属性赋予它无法识别的div
。 您可以查看 W3 学校哪些属性可以被div
接受。 顺便说一句,这完全是一个不同的话题,我建议你也去研究一下。 对于您当前的代码,您可以更改您的代码,例如:-
import React from 'react';
import logo from './logo.svg';
import './App.css';
const champions = [
{
champName: 'Ivan Ivanov',
sport: 'weightlifting',
games: 'Barcelona 1992',
},
{
champName: 'Ekaterina Dafovska',
sport: 'biathlon',
games: 'Nagano 1998',
},
];
function App() {
return (
<div>
{champions.map((champion) => (
<div>{champion.champName}</div>
<div>{champion.sport}</div>
<div>{champion.games}</div>
);
}
</div>
)
}
export default App;
如果你真的想像属性一样传递它(我们在 React 中称之为 props),你需要创建一个新组件,你的代码可以是这样的:
function Champion({name, sport, game}) {
return (
<>
<div>{name}</div>
<div>{sport}</div>
<div>{game}</div>
</>
)
}
function App() {
return (
<div>
{champions.map((champion) => (
<Champion
name={champion.champName}
sport={champion.sport}
game={champion.game}
/>
);
}
</div>
)
}
另请注意,在 React 中,HTML 标签的属性与“常规”相同。 我们只能将 props 传递给我们的自定义 React 组件。 抱歉英语不好,但我希望它能清除你的概念。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.