angular - 参数化 ngrx 选择器的方法有什么区别

标签 angular ngrx ngrx-store

在ngrx中,有两种方法(参见下面的代码)来参数化选择器。

问题:它们之间有什么区别?

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

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

我认为内存在这两种情况下都效果很好。

下面的文章说......

If the parameter doesn’t change over time we can use a factory function 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有用?

最佳答案

在 v6.2 之前,无法使用第一个选择器示例,因此将 props 传递给选择器的唯一方法是创建一个工厂函数。

问题中的两个示例的作用完全相同。

不同之处在于 props 将被传递到 createSelector 中的所有选择器,而工厂函数则不会。

关于angular - 参数化 ngrx 选择器的方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55193480/

相关文章:

angular - 将 pubnub 添加到 angular2 cli 项目

html - 菜单项不会下推旁边的菜单

Angular2指令: get tag content

Angular 5 导航在守卫返回 Observable 后被取消

angular - 如何在 Angular 2的小数管道中使用变量

angular - 从 ngrx/store 获取单个项目

angular - 我可以在 ngrx 中指定要分派(dispatch)到哪个 reducer 吗

angular - @ngrx/store-devtools 用于生产模式

angular - NGRX 依赖于其他可观察(选择器)值的操作

c# - ngrx store - 正确更新数组。