У меня есть массив объектов, мне нужно менять active на true в каждом объекте по индексу.
Есть массив:
transplantation: [
{
stops: 'all',
label: 'Все',
active: false
},
{
stops: 0,
label: 'Без пересадок',
active: true
},
{
stops: 1,
label: '1 пересадка',
active: false
},
{
stops: 2,
label: '2 пересадки',
active: false
},
{
stops: 3,
label: '3 пересадки',
active: false
}
]
Есть попытка:
case ON_SHOW:
return {
...state,
transplantation: [...state.transplantation, state.transplantation[action.index].active = true]
}
Хоть значение изменить и получается, однако создается лишний div. Как правильно обработать массив?
Вы неверно понимаете
[...state.transplantation, state.transplantation[action.index].active = true]
Это означает создать новый массив с элементами массива state.transplantation
и элементом state.transplantation[action.index].active = true
, поэтому у вас добавляется каждый раз новый элемент ( так как вы в массив новый элемент добавляете )
Можете сделать вот так:
case ON_SHOW:
return {
...state,
transplantation: state.transplantation.map((el, i) => {
if (i === action.index) {
el = {...el, active: true}
}
return el
})
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
День добрый уважаемые форумчанеСтолкнулся с такой проблемой
Всем добрый вечерПрошу помощи в таком вопросе: у меня есть LinkedList с реализованными в нем методами, не получается реализовать 3 метода: public boolean...