【问题标题】:Avoid State Mutation in NgRx Reducer避免 NgRx Reducer 中的状态突变
【发布时间】:2018-10-25 14:58:57
【问题描述】:

我是 Redux/NgRx 的新手,对 JavaScript 也很陌生。尝试实现示例状态更改。我知道当我在减速器中调度一个动作时,我应该从以前的状态创建一个新状态并更新它的一部分并返回。因此不要改变现有的状态。但是,使用下面的代码,我总是在开发工具中看到我的状态正在发生变异而不是新版本。减速器有什么问题?

减速机:

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;
  }

}

【问题讨论】:

  • 这对我来说似乎很好,您如何看到您的状态正在发生变异?
  • @timdeschryver 对不起,我正在查看开发工具,它似乎改变了状态,但现在我开始思考,也许该工具只是显示更新的状态并且可能是这不等于突变,但我也不确定。

标签: javascript angular redux ngrx


【解决方案1】:

正如 cmets 中已经说过的那样,我认为您并没有直接改变状态。 如果你想确定,你可以在开发模式下使用ngrx-store-freeze 包,如果你改变状态,这会抛出一个错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2019-01-13
    • 2020-07-01
    • 1970-01-01
    • 2021-12-06
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多