ngrx选择器订阅提升事件多次...在存储中具有实际值然后未定义然后为空值

时间:2018-05-05 12:30:28

标签: angular redux ngrx ngrx-store

我有一个项目,我已经实施了ngrx商店。

我的商店包含购物车作为商品清单。

我已为此

添加了选择器
const getUserState=(state:AppState)=>state.user || {};
export const getCarts=createSelector(getUserState,fromUser.getCart)

但是当我订阅选择器时,它被多次调用(在我的情况下,第一次使用正确的值3次,第二次未定义,第三次使用空值)

我的订阅就像是吼叫

 this.cartSubscription=this.store.select(getCarts).subscribe((cart)=>{
      console.log('---------in dashboard--------')
      console.log(cart);
    this.addedItems=cart;
    });

有没有想法为什么会这样。enter image description here

1 个答案:

答案 0 :(得分:0)

其中一项行动是将州置空。

此行为的原因:

由于我已经处理了有效的操作但我错过了减速器中动作类型的默认开关案例。

这就是为什么在那次行动发出之后它就把我的空状态撤回了。

export function reducer(state:State=initialState,action:userActions){
 switch(action.type){
     case uActions.GET_ALL_FOOD_ITEMS_FINISHED: 
                 return Object.assign({}, state, { foodItems: action.payload});
      default: return state;
}
}

默认情况保存了我:)