簡體   English   中英

ngrx / store初始化存儲無法正常工作

[英]ngrx/store init store is not working properly

我的商店包含以下減速器:

export const centralStampState = {
  layoutState : layoutReducer, //this one is not initialized
  eventTabState : eventTabReducer,
  eventTimelineState: eventTimelineReducer,
  eventWorkflowState : eventWorkflowReducer,
  displayLayerState : displayLayerReducer,
  treeState : TreeReducer
}

問題是Angular將所有化layoutState器初始化,在觸發第一個動作(導致對undefined Object的訪問)后,只有一個“ layoutState ”被初始化。

我對所有化簡器和狀態都遵循相同的實現,但是我沒有弄清楚這種奇怪行為的原因。

以下是初始化后和第一個操作之后的存儲狀態 在此處輸入圖片說明

在此處輸入圖片說明

所有減速器的實現方式都是相同的。

export function layoutReducer(state: LayoutState = INITIAL_LAYOUT_STATE, action: Action) : LayoutState{
  switch (action.type){
    case UPDATE_SPLIT_CONFIG_DIMENSION :
      return updateSplitConfigDimension(state, action);
    case DISABLE_SPLIT_CONFIGURATION:
      return state;
    case UPDATE_SPLIT_AREA_VISIBILITY :
      return state;
    case RESTORE_DEFAULT_CONFIG_LAYOUT :
      return state;
  }
}

export function eventTabReducer(state: EventTabState = EVENT_TAB_INITIAL_STATE, action: CSAction): EventTabState {
  switch (action.type) {
    case LOAD_SUPPORTED_REPORT_FIELDS:
          return state;
    default:
      return state;
  }
}

我發現了,如果是JAVA而不是Typescript,則代碼根本不會編譯!

我錯過了switch案例中的default語句,當Angular處理@ngrx/store/initlayoutReducer將忽略此操作,並且如果Angular找不到默認語句,它似乎將返回undefined

export function layoutReducer(state: LayoutState = INITIAL_LAYOUT_STATE, action: Action) : LayoutState{
  switch (action.type){
    case UPDATE_SPLIT_CONFIG_DIMENSION :
      return updateSplitConfigDimension(state, action);
    case DISABLE_SPLIT_CONFIGURATION:
      return state;
    case UPDATE_SPLIT_AREA_VISIBILITY :
      return state;
    case RESTORE_DEFAULT_CONFIG_LAYOUT :
      return state;
    default:
      return state;// with this Angular can perform the ngrx init action
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM