一个减速器从存储中删除另一个减速器的状态。

问题描述 投票:0回答:1

我正在使用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个回答
0
投票

这可能不是这个reducer的问题,但也许你有另一个reducer监听相同的动作类型。

© www.soinside.com 2019 - 2024. All rights reserved.