我的商店包含以下减速机:
export const centralStampState = {
layoutState : layoutReducer, //this one is not initialized
eventTabState : eventTabReducer,
eventTimelineState: eventTimelineReducer,
eventWorkflowState : eventWorkflowReducer,
displayLayerState : displayLayerReducer,
treeState : TreeReducer
}
问题是Angular会启动所有减速器,只有一个layoutState
'在触发第一个操作后启动(导致访问undefined
Object
)。
我对所有减速器和状态执行相同的实现,并且我没有弄清楚这种奇怪行为的原因。
我的实施对于所有减速器都是一样的。
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;
}
}
答案 0 :(得分:6)
我发现它,如果它是JAVA而不是Typescript,代码根本就不会编译!!!!!!!!
我错过了切换案例中的default
语句,当Angular处理动作@ngrx/store/init
时,layoutReducer
会忽略此操作,而Angular似乎会返回{{1}如果找不到默认语句。
undefined