Пусть у нас есть массив объектов initNotes
из предыдущего урока, элементы которого выводятся
в виде абзацев:
function App() {
const [notes, setNotes] = useState(initNotes);
const result = notes.map(note => {
return <p key={note.id}>
<span>{note.prop1}</span>,
<span>{note.prop2}</span>,
<span>{note.prop3}</span>
</p>;
});
return <div>
{result}
</div>;
}
Давайте в конце каждого абзаца сделаем кнопку для удаления:
const result = notes.map(note => {
return <p key={note.id}>
<span>{note.prop1}</span>,
<span>{note.prop2}</span>,
<span>{note.prop3}</span>
<button onClick={() => remItem(note.id)}>remove</button>
</p>;
});
Напишем реализацию функции remItem
:
function remItem(id) {
setNotes(notes.filter(note => note.id !== id));
}
Соберем весь код вместе и получим рабочее решение задачи:
function App() {
const [notes, setNotes] = useState(initNotes);
function remItem(id) {
setNotes(notes.filter(note => note.id !== id));
}
const result = notes.map(note => {
return <p key={note.id}>
<span>{note.prop1}</span>,
<span>{note.prop2}</span>,
<span>{note.prop3}</span>
<button onClick={() => remItem(note.id)}>remove</button>
</p>;
});
return <div>
{result}
</div>;
}
Возьмите таблицу с продуктами initProds
.
В конце каждого ряда сделайте ячейку, в которой
будет кнопка для удаления продукта.