【问题标题】:A reducer is removing state of another reducer from the store一个 reducer 正在从 store 中删除另一个 reducer 的状态
【发布时间】:2020-05-05 00:37:12
【问题描述】:

我正在使用 NGRX 和实体适配器。我有一个名为TransactionsComponent 的组件。当这个组件第一次被调用时,它会按预期加载交易列表。

ngOnInit(): void {
    this.store.dispatch( new actions.Query());
  }

我还有一个userReducer,它会在用户通过身份验证时创建user ID。当我第一次加载TransactionsComponent 时,事务按预期加载。当我离开此页面时,user 状态将从商店中删除,我不确定原因。

我已将范围缩小到导致问题的这行代码。 this.store.dispatch( new actions.Query()); 如果我删除这行代码,user 在组件之间导航时会保留在商店中。

这是我的reducer代码供参考

export const transactionAdapter = createEntityAdapter<Transaction>();

export interface State extends EntityState<Transaction> {}

export const initialState: State = transactionAdapter.getInitialState();

// Reducer
export function TransactionReducer(
    state: State = initialState,
    action: actions.TransactionActions
) {
    switch (action.type) {
      case actions.ADDED:
          console.log('added ran');
          return transactionAdapter.addOne(action.payload, state);
      case actions.MODIFIED:
          return transactionAdapter.updateOne({
              id: action.payload.id,
              changes: action.payload
          }, state);
      case actions.REMOVED:
          console.log(action.payload);
          return transactionAdapter.removeOne(action.payload.id, state);
      default:
          console.log('default ran');
          return state;
    }
}

// Create the default selectors
export const getTransactionState = createFeatureSelector<State>('transaction');

我的问题是,为什么这个查询会从商店中删除用户?

【问题讨论】:

    标签: angular ngrx angular2-observables


    【解决方案1】:

    应该不是这个reducer吧? 但也许你有另一个 reducer 来监听相同的动作类型。

    【讨论】:

    • 我有一个监听动作类型的效果,但是如果我注释掉这个效果,我仍然会收到同样的错误。我在控制台中收到此错误 - 这可能与此有关吗? ERROR 错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。 “隐藏”的先前值:“空”。当前值:'false'。
    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 2019-04-01
    • 2020-05-30
    • 2016-12-01
    • 2017-04-02
    • 2018-11-15
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多