Мне было поручено добавить кнопку копирования и удаления на одну из наших таблиц. Я пытаюсь передать индекс с карты на удаление и копирование по клику, и это действительно удаляет, но ...
Проблема: если вы скопируете строку, у нее будет точно такое же "i", как и у оригинала, и он перемещает положение всех тех, кто находится под ним, ужасно испортив удаление
У меня сложилось впечатление, что если я установлю setRows () на что-то новое, он снова запустит отображение и выдаст им все правильные значения. каждая функция, но это не так, почему?
const AdvancedTable = () => {
const [rows, setRows] = useState(tableRows); ///tableRows is basically an array of divs
const deleteOnClick = (i: number) => {
setRows(() => {
const myRows = [...rows];
myRows.splice(i, 1);
return myRows;
});
}
const copyOnClick = (i: number) => {
setRows(() => {
const myRows = [...rows];
myRows.splice(i, 0, rows[i]);
return myRows;
});
}
return (
<Paper>
{
rows.map((row: any, i: number) => (
<div>
<IconButton onClick={() => { deleteOnClick(i) }} size="small">
<ClearIcon />
</IconButton>
<IconButton onClick={() => { copyOnClick(i) }} size="small">
<FileCopyIcon />
</IconButton>
</div>
</TableCell>
{row}
))}
</Paper>
);
}
export default AdvancedTable;