修改嵌套的 redux 状态而不改变
modifiying nested redux state without mutating
我在用这个函数改变 redux 状态吗?
function addDefinition(object, payload) {
var newObject = Object.assign({}, object);
if(!newObject[payload.guid]){
newObject[payload.guid] = [];
}
newObject[payload.guid].push(payload);
return newObject;
}
我想创建结构来保存与应用程序不同部分相关的数据。
是的。请参阅 markerikson 的回答。请记住,您可以使用展开运算符来避免这种情况。
const INITIAL_STATE = {
guid: []
}
function addDefinition(state = INITIAL_STATE, payload) {
return {...state, guid: [...state.guid, payload]};
}
此外,您可以避免带有初始状态的 if 语句。
是的,那个 .push()
语句 是 在以后的调用中发生变异。在第一次调用中,数组是新创建的,因此它不符合突变的条件。在稍后的调用中,您创建了一个新对象但复制了现有数组引用,因此 .push()
改变了现有数组。
我在用这个函数改变 redux 状态吗?
function addDefinition(object, payload) {
var newObject = Object.assign({}, object);
if(!newObject[payload.guid]){
newObject[payload.guid] = [];
}
newObject[payload.guid].push(payload);
return newObject;
}
我想创建结构来保存与应用程序不同部分相关的数据。
是的。请参阅 markerikson 的回答。请记住,您可以使用展开运算符来避免这种情况。
const INITIAL_STATE = {
guid: []
}
function addDefinition(state = INITIAL_STATE, payload) {
return {...state, guid: [...state.guid, payload]};
}
此外,您可以避免带有初始状态的 if 语句。
是的,那个 .push()
语句 是 在以后的调用中发生变异。在第一次调用中,数组是新创建的,因此它不符合突变的条件。在稍后的调用中,您创建了一个新对象但复制了现有数组引用,因此 .push()
改变了现有数组。