簡體   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