Обновить стейт в массиве объектов у одного свойства при выполнении условия if
Есть стейт:
const [toDoList, setToDoList] = useState([]);
Массив toDoList такой:
[
{
id: '1fb2d52-c24f-45a5-01bf-edc13e78c07f',
categoryName: 'Категория 1',
color: 'green',
},
{
id: '4552731-82c-d6c0-2aaa-7ac45f4bc',
categoryName: 'Категория 2',
color: 'blue',
},
{
id: 'fa5fe4c-36b5-6dd-d7ac-ca85e7ed3aa1',
categoryName: 'Категория 3',
color: 'pink',
},
];
Мне нужно обновить стейт свойства categoryName...есть заготовка функции
function changeCategoryName(inputValue) {
const {categoryId, input } = inputValue;
}
Логику вижу такой: при клике на кнопке, происходит вызов функции. В аргументы попадают id категории и значение инпута. Далее нужно пройтись по массиву toDoList сравнивания id из аргументов и у объекта. Если id совпадают то обновить значение свойства categoryName на значение аргумента input. Я не знаю какая правильная запись функции должна быть...знаю что там ...prevState ... помогите пожалуйста.
Суть задачи в том, чтобы сделать возможным изменить имя категории.
Ответы (1 шт):
Автор решения: Darkness In me
→ Ссылка
function changeCategoryName(inputValue) {
const {categoryId, input } = inputValue;
setToDoList(prev =>
prev.map(toDoItem =>
toDoItem.id === categoryId ? ({
...toDoItem,
categoryName: input
}) : toDoItem)
)
}
