我想从数组中删除推入到状态数组中的项。我可以添加,但从react的角度来看,删除对我来说有点混乱。当前的删除函数不起作用,因为它删除了所有元素,但第一个元素?我只希望能够删除添加的数据,例如5,6,7,8
Stackblitz:https://react-ts-p6iwoh.stackblitz.io
到目前为止的代码:
import React, { Component } from 'react';
import { render } from 'react-dom';
import './style.css';
interface Idata {
name: string;
values: number[];
}
const initialData: Idata[] = [
{
name: 'Title 1',
values: [98, 15, 7, 8],
},
{
name: 'Title 2',
values: [44, 5, 7, 8],
},
{
name: 'Title 3',
values: [5, 7, 8, 9],
},
{
name: 'Title 4',
values: [76, 88, 9, 5],
},
];
const addData: Idata[] = [
{
name: 'Title 5',
values: [98, 15, 7, 8],
},
{
name: 'Title 6',
values: [44, 5, 7, 8],
},
{
name: 'Title 7',
values: [5, 7, 8, 9],
},
{
name: 'Title 8',
values: [76, 88, 9, 5],
},
];
const App: React.FunctionComponent = () => {
const [tag, setTag] = React.useState<Idata[]>(initialData);
return (
<React.Fragment>
<div className="intial-data">
{tag?.map((inner: Idata, index: number) => {
return <div key={index}>{inner.name}</div>;
})}
</div>
<br />
<div>
{addData?.map((inner: Idata, index: number) => {
return (
<React.Fragment key={index}>
<div>
{inner.name}{' '}
<button
onClick={() =>
setTag((oldArray) => [...oldArray, addData[index]])
}
>
Add
</button>
<button
onClick={() =>
setTag((oldArray) => oldArray.splice(index, 1))
}
>
Remove
</button>
</div>
</React.Fragment>
);
})}
</div>
</React.Fragment>
);
};
render(<App />, document.getElementById('root'));发布于 2021-11-09 11:20:54
关于下面的评论:
将id添加到IData后,可以使用filter,如下所示:
onClick={() =>
setTag((oldArray) => {
return oldArray.filter(item => item.id !== inner.id);
})
}https://stackoverflow.com/questions/69896974
复制相似问题