是否可以在 ngrx 上创建非记忆选择器?
我有一个非常小的选择器来检查存储中的值是否大于 Date.now()。
export const selectAuthState = createFeatureSelector<AuthState>('auth');
export const hasTimeout = createSelector(
selectAuthState,
state => state.timeout < Date.now()
);
正如预期的那样,这个选择器没有用,因为除非我更改它的值,否则它不会被重新计算timeout
。有没有办法使选择器不被记忆,以便每次访问其值时都会重新计算?
我当前的解决方案是创建一个选择器工厂并每次都使用它,但我认为这不是最好的解决方案:
export const hasTimeoutFactory = () => createSelector(
selectAuthStatusState,
state => state.timeout < Date.now()
);
另一种解决方案是做类似的事情
export const didTimeout = pipe(
select(getTimeout), // using memoized value
map(val => val < Date.now())
);
然后导入这个管道。
选择器有一个release
重置记忆的方法,我想这就是你想要使用的。
这翻译成以下代码:
this.timeout = this.store.pipe(select(hasTimeout));
hasTimeout.release();
Docs https://github.com/ngrx/platform/blob/master/docs/store/selectors.md#reset-memoized-selector
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)