在 ngrx 中使用带有 props 的选择器的替代方法是什么

What is the alternative to using selectors with props in ngrx

我正在 ngrx website 上阅读有关 selectors 的文章,我偶然发现 selectorsprops

ngrx 团队表示它已被弃用,但他们没有提供替代方案。我想在我的应用程序中使用 selectorsprops

除了使用带有 props 的选择器之外,还有其他选择吗?

如果有,我该怎么做?

通知中的“弃用”一词实际上是 link,但由于横幅的颜色,很难注意到。它 link 到 a GitHub Issue discussing selectors with props.

这个问题引起了人们的关注,因为 Angular 12+ 默认在 strict mode 中,开发人员可能 运行 在使用 props 的选择器的实现中存在缺陷 -即 prop 值不是强类型或可能类型不正确。

建议的方法是使用工厂选择器。本质上,不是将 props 作为选择器的参数传递,而是将 props 作为选择器定义的函数的参数。

所以代替:

export const getCount = createSelector(
  getCounterValue,
  (counter, props) => counter * props.multiply
);

const count = this.store.select(getCount, 5);

您将使用:

export const getCount = (multiply: number) => createSelector(
  getCounterValue,
  (counter) => counter * multiply
);

const count = this.store.select(getCount(5));

Gunnar B.'s comment helpfully links to a migration guide with a section about moving from selectors with props to factory selectors 如果您需要更多信息。