[英]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/init
, layoutReducer
將忽略此操作,並且如果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.