reactjs - React:删除具有相同键和相同道具的组件之一时的混淆结果
问题描述
我正在学习 React 键是如何工作的。我使用带有对象列表的数组来生成 React 元素列表,其中有两个元素具有相同的键和相同的道具。当我通过单击删除按钮删除第一个元素时,屏幕上有树元素(2、2、2),预期结果是两个(2、2)。这让我很困惑。有谁知道这个混淆结果的原因?有一个演示链接。
const COMPONENT_LIST = [
{ key: 1, value: 1, id: 1 },
{ key: 2, value: 2, id: 2 },
{ key: 2, value: 2, id: 3 }
];
class App extends React.Component {
state = {
arr: COMPONENT_LIST
};
render() {
return (
<>
<button
onClick={() => {
this.setState({
arr: COMPONENT_LIST
});
}}
>
Recover
</button>
<ul>
{this.state.arr.map(item => (
<li key={item.key}>
{item.value}
<button
onClick={() => {
this.setState({
arr: this.state.arr.filter(ele => item.id !== ele.id)
});
}}
>
Delete
</button>
</li>
))}
</ul>
</>
);
}
}
解决方案
推荐阅读
- android - React Native 应用程序崩溃:无法从资产“index.android.bundle”加载脚本
- mongodb - 如何在 MongoDB 中将数组位置 $ 与聚合投影一起使用
- networking - 办公室网络设置
- android - Unity 到 Android - apk 安装但不运行
- java - 将 java.time.LocalDate 与 postgres 日期进行比较的问题
- php - php用参数调用python脚本但没有输出
- c# - 在 UWP 中运行时重新生成 DataGrid 列
- angular - Material Angular 6中的单行水平芯片列表
- java - Spring JPA:外部事务能否回滚成功的内部事务
- awk - 如何打印此 Awk 命令以便输出到新文件?