Есть визард с переключениями по шагам. К проекту подключен redux store. В нем есть вот такой массив:
const initialState = [
{
id: 0,
stepTitle: 'Параметры кредита',
formName: 'firstForm',
fields: [],
stepConditions: {
valid: false,
error: false,
active: true
}
},
{
id: 1,
stepTitle: 'Данные компании',
formName: 'secondForm',
fields: [],
stepConditions: {
valid: false,
error: false,
active: false
}
},
{
id: 2,
stepTitle: 'Руководитель и учредители',
formName: 'thirdForm',
fields: [],
stepConditions: {
valid: false,
error: false,
active: false
}
}
];
Я хочу вызвать экшен без параметров для включения например следующего шага визарда, для этого мне нужно пройтись в сторе по массиву найти у какого объекта stepConditions.active === true ему поставить false, а следующему объекту в stepConditions.active выставить true.
Как правильно это сделать вот кусок, который я написал, но не могу придумать, как поменять active у следующего элемента:
export default function expressCredits(state = initialState, action) {
switch (action.type) {
case OPEN_NEXT_EXPRESS_FORM_STEP:
return [
...state.map( field => {
const {
stepConditions: { active }
} = field;
if (active) {
return {
...field,
stepConditions: { ...field.stepConditions, active: false }
};
}
return { ...field };
})
];
default:
return state;
}
}