如果我有一个状态对象,例如:
[{
"value":"e1",
"label":"john@example.com",
"domain":"d1",
"selected":false
},
{
"value":"e2",
"label":"jack@example.com",
"domain":"d1",
"selected":false
},
{
"value":"e3",
"label":"silvia@example.com",
"domain":"d1",
"selected":false
}]
和动作对象
{
"value":"e1",
"label":"john@example.com",
"domain":"d1",
"selected":false
}
在redux还原器中,如何在"选择"中"选择"中的动作对象中分别更改状态,而无需使用最好的纯ES6函数进行突变?
我对Redux世界非常陌生,发现很难在不突变的情况下更新状态。
实际上我很久以前就已经对此进行了分类,但认为这可能对他人有用:
export const select = (state, action) => {
const index = state.findIndex(elem => elem.value === action.payload.value);
return [
...state.slice(0, index),
{
...action.payload,
selected: true
},
...state.slice(index + 1)
];
};
我假设当前state
中有很多东西,并且您想在数组中更改为第一个对象的 selected
值为 true
,然后将其与当前状态合并并更新状态。
假设您的"状态对象"称为 foo
,在您的还原函数中,您将首先执行诸如foo[0].selected = true;
之类的操作,然后您可以使用everal oterator更新状态,例如:
return {
...state,
foo
};
我希望这有意义,或者我问的是我的问题?