Селекторы Ngrx: createSelector VS pure rxjs - PullRequest
0 голосов
/ 05 июня 2018

Привет, отличные интернет-мысли,

Я пытаюсь понять, как использовать селекторы ngrx и как переваривать эту статью: Селекторы ngrx

Есть примеры, показывающие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)))
);

Я знаю, что использование их с магазином будет отличаться также

Например

store.pipe(select(getAllActiveUsersNGRX));

VS

store.pipe(select(getAllActiveUsersRXJS));

Помимо того, как они используются в магазине, есть ли еще какие-то преимущества, которые я еще не понял, или это чисто кодовое предпочтение?

Спасибо

1 Ответ

0 голосов
/ 11 сентября 2018

Снаружи они одинаковы.Разница в том, как часто будет вызываться функция (users: IUser[]) => users.filter(user => (user.active === true)).Как createSelector создать памятную функцию.

Функция селектора, возвращаемая вызовом createSelector или createFeatureSelector, изначально имеет запомненное значение null.После первого вызова селектора его запомненное значение сохраняется в памяти.Если селектор впоследствии вызывается с теми же аргументами, он возвращает запомненное значение.Если селектор затем вызывается с другими аргументами, он пересчитает и обновит свое запомненное значение

ngRx docs

...