【发布时间】:2021-05-31 23:09:28
【问题描述】:
我正在尝试创建一个可以随时添加和删除的表格字段列表。
问题
只要我点击删除中间的任何元素(除了最后一个),它就会删除它下面的所有项目
代码是here
我不确定是什么做错了,它会删除所有元素,即使我尝试删除特定元素。
这里也添加代码
import React, { useState } from 'react';
import { v4 as uuidv4 } from 'uuid';
const ListComponent = ({ remove, id }) => {
return (
<tr>
<td>
<input />
</td>
<td><button onClick={() => remove(id)}>Delete</button></td>
</tr>
)
}
const App = () => {
const [array, setArray] = useState([]);
const remove = (itemId) => {
setArray(array.filter(each => each.id !== itemId))
}
const addListComponent = () => {
let id = uuidv4();
setArray(oldArray => [...oldArray, {
id,
jsx: <ListComponent key={id} id={id} remove={remove}/>
}])
}
return (
<div>
<button onClick={addListComponent}>Add ListComponent</button>
{array.length > 0 && array.map(each => each.jsx)}
</div>
)
}
export default App;
【问题讨论】:
-
这不是变异,而是关闭问题。过滤器不会改变数组
-
我没有使用过滤器进行变异,我使用 useState 作为过滤器应该返回一个过滤后的数组对吗?
标签: javascript node.js reactjs react-native react-redux