【发布时间】:2018-06-19 15:02:31
【问题描述】:
我刚刚遇到了@ngrx 的custom selectors,我根本无法对这个功能感到惊讶。
按照他们对selectedUser 的books 用例,我无法给出使用自定义选择器的真正充分理由,例如:
export const selectVisibleBooks = createSelector(selectUser, selectAllBooks, (selectedUser: User, allBooks: Books[]) => {
return allBooks.filter((book: Book) => book.userId === selectedUser.id);
});
而不是类似的东西:
export const selectVisibleBooks = Observable.combineLatest(selectUser, selectAllBooks, (selectedUser: User, allBooks: Books[]) => {
return allBooks.filter((book: Book) => book.userId === selectedUser.id);
});
我试图说服自己createSelector 的memoization 是关键部分,但据我了解,它无法对非原始值执行这些性能提升,因此它不会真正节省任何计算非原始切片,通过使用Rx的distinctUntilChanged运算符和combineLatest可以解决。
那么我错过了什么,我为什么要使用@ngrx/selector?
提前感谢您提供任何见解。
【问题讨论】:
-
就我个人而言,我宁愿坚持尽可能多的纯 rxjs,所以我选择使用 combineLatest 而不是 createSelector,这样我就知道更接近金属的情况了。
-
@born2net 在过去的所有时间之后,我想我喜欢这种方法,就像你说的 - 更多控制
标签: angular redux observable ngrx combinelatest