javascript - React:将索引传递给孩子并让数组使用这个索引
问题描述
如果对您更方便,请查找沙盒供您参考。
https://codesandbox.io/s/mystifying-lichterman-k5hh6
我做了一个Person
组件。
在组件中有一个数组,我想将索引从App
to传递Person
,它将显示人的姓名和年龄。
function Person(props) {
const { info, setInfo, index } = props;
const peopleInfo = {
members: [
{
name: "Iris",
age: 23
},
{
name: "Bob",
age: 33
},
{
name: "Ken",
age: 28
},
{
name: "Eddie",
age: 26
}
]
};
const getInfo = () => {
setInfo({
name: peopleInfo.members[index].name,
age: peopleInfo.members[index].age
});
};
useEffect(() => {
getInfo();
}, []);
return (
<>
<div className="card_body">
<span className="name">{info.name}: </span>
<span className="age">age {info.age}</span>
<span> (index: {index})</span>
</div>
</>
);
}
export default Person;
在 中App.js
,我导入两个Person
并传递索引。
import Person from "./components/Person.js";
function App() {
const [info, setInfo] = useState({ name: "", age: "" });
return (
<div className="App">
<Person info={info} setInfo={setInfo} index={0} />
<Person info={info} setInfo={setInfo} index={3} />
</div>
);
}
在我通过的index={0}
例子index={3}
中Person
我的理想结果应该是:
虹膜:23 岁(指数:0)
埃迪:26岁(指数:3)
但结果是这样的:
埃迪:26 岁(指数:0)
埃迪:26岁(指数:3)
索引确实传递给了,Person
但它没有正确显示这个人。
我能做些什么来解决它?谢谢你。
解决方案
如果我对你的理解正确,你想通过数组映射并用它们的索引打印所有它们,如果这样,那么你这样做的方式是错误的,你必须这样:
//Person.js
import React, { useEffect } from "react";
function Person(props) {
const { name, age, index } = props;
return (
<>
<div className="card_body">
<span className="name">{name}: </span>
<span className="age">age {age}</span>
<span> (index: {index})</span>
</div>
</>
);
}
export default Person;
//App.js
import React, { useState, useEffect } from "react";
import "./styles.css";
import Person from "./components/Person.js";
function App() {
const peopleInfo = {
members: [
{
name: "Iris",
age: 23
},
{
name: "Bob",
age: 33
},
{
name: "Ken",
age: 28
},
{
name: "Eddie",
age: 26
}
]
};
const [info, setInfo] = useState({ name: "", age: "" });
return (
<div className="App">
{peopleInfo.members.map((person, index) => {
return <Person {...person} index={index} />;
})}
</div>
);
}
export default App;
还更新了您的沙盒沙盒
推荐阅读
- javascript - 如何使用 Adonis 中的用户角色更新联结表
- wordpress - 删除手持页脚菜单链接 Woocommerce
- excel - Excel 插件:如何检测/防止 Excel 用户删除工作表?
- django - django-cities:找不到 GDAL 库
- python - 无法使用“os.environ”检索数组环境变量
- java - 在不支持 PagedResultsControl 的 LDAP 服务器上分页
- qt - Qt QSslSocket comodo 正 ssl
- excel - Excel:在一个单元格中查找多个值并在另一个单元格中返回结果
- python - 使用棉花糖序列化 sqlalchemy hybrid_property
- javascript - 获取语言环境的货币符号