代码之家  ›  专栏  ›  技术社区  ›  Aragorn

避免NgRx还原剂的状态突变

  •  0
  • Aragorn  · 技术社区  · 7 年前

    Redux/NgRx 对JavaScript来说也是相当陌生的。尝试实现示例状态更改。我知道当我在reducer中分派一个操作时,我应该从以前的状态创建一个新的状态,并更新它的一部分并返回。因此,不改变现有状态。然而,在下面的代码中,我总是在开发工具中看到我的状态正在被改变,而不是新版本。减速机有什么问题?

    export interface State {
      transactions: []
    }
    
    export function trasactionReducer (state: State, action: txActions.Actions) {
    
      switch (action.type) {
        case txActions.LOAD_ACCOUNT_TRANSACTION:
          return {...state};
    
        case txActions.STORE_ACCOUNT_TRANSACTION:
          return {...state, 
            transactions : action.payload
          };
    
        default:
          console.log("transactionReducer, defaul action triggerred for action: "+ action.type);
          return state;
      }
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   timdeschryver    7 年前

    正如评论中所说,我认为你并没有直接改变国家。 ngrx-store-freeze 包处于开发模式,如果你改变了状态,这将抛出一个错误。