angular - 参数化ngrx选择器的方法有什么区别
问题描述
在 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
有用?
解决方案
在 v6.2 之前,无法使用第一个选择器示例,因此将 props 传递给选择器的唯一方法是创建一个工厂函数。
问题中的两个示例完全相同。
不同之处在于 props
它将传递给 中的所有选择器createSelector
,而工厂函数则不会。
推荐阅读
- javascript - 不和谐按钮操作行不显示
- git - Git:在合并之前用“git checkout”覆盖文件更改
- python-3.x - 使用正则表达式从一行中提取名称和值
- salesforce - Salesforce:将 3 个权限集合并为 1 个
- html - 同一个类如何只显示一个td()
- autodesk-forge - Autodesk Forge - SQLLite db中的参考点信息
- sql - 从状态更新到一个周期结束,每个月都有一行
- r - ggplot条形图(geom_bar)使用df的起点和终点
- android - 在图像上添加 GPS EXIF 在 React-Native iOS 中不起作用
- python - 如何提高 HDF5 读取数据的性能?