繁体   English   中英

修改嵌套的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;
}

我想创建结构来保存与应用程序不同部分相关的数据。

是的,这.push() 语句变异在以后的调用。 在第一个调用中,数组是新创建的,因此它不符合变异条件。 在以后的调用中,您创建了一个新对象,但复制了现有的数组引用,因此.push()会使现有数组发生突变。

是。 请参阅markerikson的答案。 请记住,您可以使用点差运算符避免这种情况。

const INITIAL_STATE = {
  guid: []
}

function addDefinition(state = INITIAL_STATE, payload) {

  return {...state, guid: [...state.guid, payload]};

}

另外,您可以避免使用带有初始状态的if语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM