Angular应用NgRx Store取值异常:状态更新但视图不刷新
问题排查与修复
核心问题是根状态的键名与Selector中的引用不匹配:
在app.module.ts中,你注册Reducer时用的键是users:
StoreModule.forRoot({ users: userReducer }),
但在user.selectors.ts的selectUser选择器里,你试图从根状态中获取user属性(少了末尾的s):
export const selectUser = (state: AppState) => state.user;
这就导致选择器始终无法正确定位到用户状态,所以selectMeUser返回undefined,页面自然不会更新。
修复方案(二选一即可)
方案1:修改选择器匹配键名
把selectUser改为引用正确的键users:
export const selectUser = (state: AppState) => state.users;
方案2:修改Reducer注册的键名
把StoreModule.forRoot中的键改为user,匹配选择器的引用:
StoreModule.forRoot({ user: userReducer }),
额外检查点
确保你的AppState接口定义与实际根状态结构一致,比如如果用方案1,AppState应该是:
export interface AppState { users: UserState; // 其他状态... }
如果用方案2,则是:
export interface AppState { user: UserState; // 其他状态... }
内容的提问来源于stack exchange,提问作者Croicco
相关产品推荐
相关产品推荐

