javascript - javascript react 从地图中的值设置状态
问题描述
const[deleteId,setDeleteId] = useState();
const PatientDeleteVarifiToggle = e =>{
setDeleteId(e.target.value)//<<<<<--------------------------------THIS
setDeleteState(true)
}
return (
<div>
<table>
<thead>
<tr>
<th>Name</th>
<th>Doctor</th>
<th>Emergancy Contact</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{
allPatients.map((patient, i)=>{
return(
<tr>
<td key={i}>{patient.firstName} {patient.lastName}</td>
<td key={i}>{patient.doctor}</td>
<td key={i}>{patient.emergancyContact}</td>
<td><Link to={`/patientDetails/${patient._id}`}>Details</Link> |
<p key={i} value={patient._id} onClick={PatientDeleteVarifiToggle}>Remove</p></td> //<<<<<<------------------------THIS
</tr>
)
})
}
</tbody>
</table>
我需要将deleteId
状态分配给我正在映射的患者的 ID。我知道它包含我想要的 id,因为我通过在标签patient._id
内显示它来测试它p
解决方案
对于onClick
事件,该value
属性将不起作用,它将未定义,但您可以改用该id
属性。
const PatientDeleteVarifiToggle = e =>{
setDeleteId(e.target.id);
setDeleteState(true);
}
...
<p id={patient._id} onClick={PatientDeleteVarifiToggle}>Remove</p>
此外,对于映射,React 键应该在最外层返回的元素上,tr
在这种情况下,因为看起来你正在改变底层数据数组,使用数组索引会导致协调/渲染问题,使用相反id
,因为这些在数据集中可能是唯一的并且是稳定的(它们与他们识别的数据保持一致)。
{allPatients.map((patient) => {
return (
<tr key={patient._id}>
<td>{patient.firstName} {patient.lastName}</td>
<td>{patient.doctor}</td>
<td>{patient.emergancyContact}</td>
<td>
<Link to={`/patientDetails/${patient._id}`}>Details</Link> |
<p id={patient._id} onClick={PatientDeleteVarifiToggle}>Remove</p>
</td>
</tr>
)
})}
推荐阅读
- angular - 在 wwwroot 以外的目录中的 .Net Core 中运行 Angular App
- amazon-web-services - 选择正确的 EC2 实例类型?
- python - 从 bash 重复运行 Python 脚本
- c++ - C ++:结构访问自身的实例
- parse-platform - Xamarin.Android 异常与 FCM & Parse
- python-3.x - 如何在 python 中的 jaydebeapi 中发送多个查询(Netezza JDBC)
- python-3.x - 使用networkX和matplotlib在python中的相同位置/坐标绘制不同的图形
- typescript - 在 npm 中发布到 @types 组织
- xcode - pod install 重置 XCode 中的模拟器/设备设置
- php - 如果空 laravel 5.6,检查关系的关系?