в чем разница между способами параметризации селектора ngrx - PullRequest
0 голосов
/ 16 марта 2019

в ngrx есть 2 способа (см. Следующий код) для параметризации селектора.

Вопрос: в чем разница между ними?

const getUser1 = () =>
  createSelector(
    getEntities,
    (state, props) => state[props.id]
  );

const getUser2 = id =>
  createSelector(
    getEntities,
    state => state[id]
  );

Я думаю, что запоминание отлично работает в обоих случаях.

и в статье ниже говорится ....

Если параметр не меняется со временем, мы можем использовать заводскую функцию https://blog.angularindepth.com/ngrx-parameterized-selector-e3f610529f8

ки. эти селекторы используются следующим образом.

@Component({
  selector: 'app-user-container',
  template: ``
})
export class UserContainerComponent {
  user1$ = this.store.pipe(select(getUser1(), { id: 1 }))
  user2$ = this.store.pipe(select(getUser2(2)))

  constructor(private store: Store<AppState>) {}
}

в обоих случаях (getUser1() и getUser2(2)), заводские функции оцениваются при инициализации класса (поэтому параметр не будет изменен для обоих селекторов). Я не мог найти разницу в этом случае ....

когда getUser1 полезно?

1 Ответ

0 голосов
/ 16 марта 2019

До v6.2 было невозможно использовать первый пример селектора, поэтому единственный способ передать реквизиты селектору - создать фабричную функцию.

Оба примера в вопросе выполняют в точностито же самое.

Разница будет в том, что props будет передано на все селекторы в createSelector, заводская функция не будет.

...