嗨,伟大的网络思想,
我试图了解ngrx选择器的高级用法并努力消化这篇文章:ngrx selectors
有些例子显示了createSelctors和一些纯粹的rxjs魔术。使用一个与另一个有任何好处。感兴趣的方法是getAllActiveUsersNGRX VS getAllActiveUsersRXJS。
样品
const selectUserStore = (state: GlobalState) => state.userStore;
const getAllUsers = createSelector(
selectUserStore ,
(state: UserState) => state.allUsers
);
const getAllActiveUsersNGRX = createSelector(
getAllUsers,
(users: IUser[]) => users.filter(user => (user.active === true))
);
const getAllActiveUsersRXJS = pipe(
select(getAllUsers),
map((users: IUser[]) => users.filter(user=> (user.active === true)))
);
我知道在商店使用它们也会有所不同
E.g
store.pipe(select(getAllActiveUsersNGRX));
VS
store.pipe(select(getAllActiveUsersRXJS));
除了它们与商店一起使用的方式之外,还有一些我尚未理解的好处还是纯粹的编码偏好?
由于
答案 0 :(得分:1)
从外部看,它们是相同的。不同之处在于(users: IUser[]) => users.filter(user => (user.active === true))
函数将被调用的频率。
在createSelector
中创建记忆功能。
通过调用createSelector或返回的选择器函数 createFeatureSelector最初的记忆值为null。之后 选择器在第一次存储其记忆值时被调用 记忆。如果选择器随后被相同的调用 参数将返回备注值。如果选择器是 用不同的参数调用它将重新计算并更新其 记忆值