Alb*_*era 6 ngrx angular ngrx-store
是否可以在 ngrx 上创建非记忆选择器?
我有一个非常小的选择器来检查存储中的值是否大于 Date.now()。
export const selectAuthState = createFeatureSelector<AuthState>('auth');
export const hasTimeout = createSelector(
selectAuthState,
state => state.timeout < Date.now()
);
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,这个选择器没有用,因为除非我更改 的值,否则它不会被重新计算timeout。有没有办法使选择器不被记忆,以便每次访问其值时都会重新计算?
我当前的解决方案是创建一个选择器工厂并每次都使用它,但我认为这不是最好的解决方案:
export const hasTimeoutFactory = () => createSelector(
selectAuthStatusState,
state => state.timeout < Date.now()
);
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是做类似的事情
export const didTimeout = pipe(
select(getTimeout), // using memoized value
map(val => val < Date.now())
);
Run Code Online (Sandbox Code Playgroud)
然后导入这个管道。
选择器有一种release重置记忆的方法,我认为这就是您想要使用的。
这翻译成以下代码:
this.timeout = this.store.pipe(select(hasTimeout));
hasTimeout.release();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |