gpt4 book ai didi

angular - 如何使用@ngrx/entity 按 id 选择单个对象

转载 作者:太空狗 更新时间:2023-10-29 17:36:42 24 4
gpt4 key购买 nike

使用 @ngrx/entity 我想通过单个 id 选择实体或通过实体映射中的 id 数组选择实体数组。

我不希望在实体集合获取新元素或实体项更改时触发组件内的选择订阅,而我根本没有选择。

当我使用 selectEntities 选择器然后从结果中选择 ID 时,这显然发生在我身上。

那么如何从实体集合中通过 id 选择 1 或 n 项?

最佳答案

编辑: 正如 Ethan 在下面提到的,selectors with props were deprecated in v12 .这个决定是discussed extensively in an RFC . (在线程地址下方评论 how to effectively memoise factory functions 。)

目前推荐的方法是使用工厂函数:

export const selectEntity = id => createSelector(
selectEntities,
entities => entities[id]
);

export const selectEntitiesByID = ids => createSelector(
selectEntities,
entities => ids.map(id => entities[id])
);

这样称呼:

this.store.pipe(
select(selectEntity(someID))
);

this.store.pipe(
select(selectEntitiesByID(arrayOfIDs))
);

以前,NgRx 支持参数化选择器 passing props as the last argument to a selector function :

export const selectEntity = createSelector(
selectEntities,
(entities, props) => entities[props.id]
);

export const selectEntitiesByID = createSelector(
selectEntities,
(entities, props) => props.ids.map(id => entities[id])
);

这些调用完全符合您的预期:

this.store.pipe(
select(selectEntity, { id: someID })
);

this.store.pipe(
select(selectEntitiesByID, { ids: arrayOfIDs })
);

关于angular - 如何使用@ngrx/entity 按 id 选择单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49736580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com