You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重新赋值mockStore.overrideSelector()设置的返回值?

问题原因

resetSelectors 方法的作用是清除所有 selector 的自定义覆盖配置,让 selector 恢复到原始的实现逻辑,而非清除上一次设置的覆盖值。如果你的原始 selector 逻辑默认返回 true,就会出现修改后仍返回原值的问题。

解决方案

方法1:直接重写覆盖(适用于 NgRx 7.0+ 版本)

已经设置过覆盖值的 selector,不需要重置,直接二次调用 overrideSelector 传入新值,再触发状态刷新即可:

mockStore.overrideSelector(someSelector, false);
mockStore.refreshState();
spectator.detectChanges();

方法2:清除记忆化缓存后重写(适用于 createSelector 生成的带缓存的 selector)

如果你的 selector 是通过 createSelector 生成的带记忆化能力的 selector,需要先清除缓存再重写:

someSelector.release(); // 清除selector的记忆化缓存
mockStore.overrideSelector(someSelector, false);
mockStore.refreshState();
spectator.detectChanges();

校验方法

如果修改后仍有疑问,可以通过快照方法直接验证 selector 的返回值:

console.log(mockStore.selectSnapshot(someSelector));

内容的提问来源于stack exchange,提问作者Kode_12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:18:01