javascript - 如何在reactjs中单击删除表格行?
问题描述
这是我上一个问题的补充;我试图在单击按钮时删除特定行,但是每次单击按钮时,它都会删除下一个表格行而不是其本身。这是视频的样子。我用来执行此操作的当前代码是:
const [shop, setShop] = useState([]);
const singleDelete = (d) => {
const newArr = [...shop];
const index = shop.findIndex((contact) => contact.id === d);
newArr.splice(index, 1);
setShop(newArr);
}
return (
<div className="content">
<Table>
<tbody id="tbid">
{(shop.map((s,i) => (
<tr key={`${s+i}`} id={i} value={`${i}Row`}>
<td>{i}</td>
<td>{profil[i]}</td>
<td>{s}</td>
<td></td>
<td>{acc[i]}</td>
<td>
<Button className="btn-round btn-icon" color="danger" size="sm" type="submit" onClick={singleDelete}>
<i className="icon-simple-delete"/>
</Button>
</td>
</tr>
)))}
</tbody>
</Table>
<div>
)
我已经尝试使用
setShop(shop.filter((_, index) => index !== d));
但结果仍然相同。
解决方案
问题是您没有将 ID 传递给singleDelete
函数。
改变这个:
onClick={singleDelete}
对此:
onClick={ () => singleDelete(s.id) }
singleDelete
像@stoen推荐的那样重写函数会很好。
推荐阅读
- c# - 并非所有代码路径都在 C# 控制台应用程序错误代码中返回值:CS0161
- flutter - 如何在 Flutter 中水平居中 Column 小部件
- google-analytics - Google Analytics(分析)用户 ID 状态显示为“未分配”
- javascript - 删除带前缀的零值
- c++ - 将 std::map 传递给线程时,我的行为不一致
- java - 单击时如何从 Android 的 Firestore 中删除 ListView 文档?
- blockchain - 在以太坊中支付挖矿费不是和向银行支付费用类似吗?
- python - 如何将字典值映射到具有列表值的数据框列
- google-chrome - 如何从选定元素中创建查询选择器?
- database - 是否应该加密所有用户信息?