簡體   English   中英

Javascript - 更新不可變記錄中對象的值

[英]Javascript - Update value of object inside Immutable Record

我有一個像這樣制作的不可變 Javascript 對象(來自不可變庫)

const myObj = Immutable.Record({
  id: 1,
  myObject: {
    firstValue: false,
    secondValue: false,
  },
});

我想使用 Immutable.Record 類的 set 方法將 firstValue 屬性更新為true ,但由於此對象被用作使用 Flux 的 React 狀態,我想在一行中執行此操作,如下所示:

reduce(state, action){
    switch(action.type){
        case ActionTypes.CHANGE_VALUE:
            //The value to change is stored in action.value
            return state.set("myObject", //AddCodeHere);
    }
}

action.value變量是強制性的,所以我必須使用該變量更新該值。

我怎樣才能做到這一點?

編輯

我找到了答案(有點復雜,但它有效)。 它使用 ES6 最新的東西之一,Object.fromEntries 方法。

return state.set(
          "myObject",
          Object.fromEntries(
            Object.entries(state.get("myObj")).map(([k, v]) =>
              k === action.value ? [k, !v] : [k, v]
            )
          )
        );

我從未使用過 Flux,但我認為 Redux 可能也是如此。 嘗試使用這個不可變更新模式

return {
  ...state,
  myObject: {
    ...state.myObject,
    firstValue: true
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM