为什么重新选择重构后 ngrx 应用程序中的状态现在未定义?

Why is state now undefined in ngrx app after reselect refactoring?

我刚刚检查了我以前工作的应用程序并将其重构为使用 reselect 作为 ngrx 示例应用程序 now does。我没有任何编译错误,但我有这个运行时错误:

error_handler.js:53 TypeError: Cannot read property 'token' of undefined
    at loggedIn (session.reducer.ts:46)

来自我的 session.reducer.ts 文件中的这段代码

export const loggedIn = (state: Session) => !!state.token;

这是应用程序主页面中用于 show/hide 已登录用户名的标志。该页面几乎完全空白,我遇到了同样的问题,状态的其他部分未定义。我不确定要尝试什么。

您正在使用 createSelector 构建根减速器。可能是打字错误。你可能想要 compose 你的 reducer 函数:

const developmentReducer = compose(
    storeFreeze,
    localStorageSync(['session'], true),
    combineReducers)(reducers);

const productionReducer = compose(
    localStorageSync(['session'], true),
    combineReducers)(reducers);