Записать еще один объект в state в React
У меня есть стейт с объектом. Нужно записать в него еще один.
this.state = {
meal: {
type: null,
participants: null,
budget: null,
activity: null,
error: null,
key: null
},
}
Данные приходят из апи, но при нажатии на кнопку нужно, чтобы записался еще один продукт. + проверился, нет ли в стейте такого же. Тогда не записывать.
addItem = (meal) => {
const newItem = {meal};
if (newItem.key !=== this.state.meal.key) {
this.setState(({meal}) => {
const newMeal = {...meal, newItem};
return {
this.state = newMeal
}
})
}
}
Ответы (1 шт):
Автор решения: dev_event
→ Ссылка
У вас неправильный флоу. В стейте должен быть массив с обьектом, так будет более правильно работать со структурой данных. Но для вашей ситуации можно применить такое решение:
const addItem = meal => {
const { meal: current } = this.state;
/**
* meal уже должен быть обьектом
* */
if (meal.key === current.key) return;
this.setState(({ item }) => ({ ...item, ...meal }));
};