在ngrx/entities中,是否有必要使用不会更改的id?我想使用字符串属性path
作为id,它是唯一的。但它可能会被更改。在这种情况下,我应该使用uuid作为id吗?
在ngrx/entities中,是否有必要使用不会更改的id?我想使用字符串属性path
作为id,它是唯一的。但它可能会被更改。在这种情况下,我应该使用uuid作为id吗?
您可以传递一个函数来覆盖创建适配器时默认的id选择:
export const adapter: EntityAdapter<Model> = createEntityAdapter({
selectId: (model: Model) => model.modelId,
});
我们需要更新EntityAdapter中的Ids,因为API返回唯一ID以供将来参考,而在首次添加到存储时不可用。因此,如果您愿意,可以自行更改它。
const updateSelectedRooms = new selectedRoomsActions.UpdateSelectedRooms(
{
entities: [
{
changes: {
id: mockResponse.data.rooms[0].roomId,
pricing: mockResponse.data.rooms[0].pricing,
},
id: '1234-5678',
},
],
},
);
mapOne
函数。可以通过传递旧的id来使用它来更新具有不同id的实体。const updatesAdapter: EntityAdapter<ModelEntity> = createEntityAdapter<ModelEntity>();
...
on(Action.someUpdateAction, (state,
{newEntity, oldId}): State => {
return updatesAdapter.mapOne({
id: oldId,
map: (e: ModelEntity) => ({
...newEntity
})
}, state);
}),
...
我认为它将解决与实体ID相关的问题。您还可以尝试使用实体适配器来执行任何想要在实体上执行的功能,而且更进一步的是,您应该尝试@ngrx/data。