在客户端项目中,我使用NGRX/Store和NGRX/Entity。
虽然存储区的大部分由实体组成,但我必须在状态中存储其他值。出于商业原因,我需要在某个时间点上所有项目的长度。
export interface State extends EntityState<Item> {
initialItemListSize: number; // this should hold the length of entity-adapters items-list-size at a certain point
}
不管怎样,在某个时候我只想
this.store.dispactch(saveItemListSizeNow);
呼叫。
现在我想知道我必须在哪里实现逻辑(获取列表长度(。
起初我认为在减速器
on(Itemctions.saveItemListSizeNow, (state) => {
const size = ... //<--- no Idea how to get the length here
return { ...state, initialItemListSize: size };
}),
有人能给我一个答案吗?
您可以访问状态上的实体。
state.ids.length
例如:
on(Itemctions.saveItemListSizeNow, (state) => {
const size = ... //<--- no Idea how to get the length here
return { ...state, initialItemListSize: state.ids.length};
}),
您的操作可以用有效载荷数据来定义,这些数据可以在调度时传递,例如:
import { createAction, props } from '@ngrx/store';
export const saveItemListSizeNow= createAction(
'[Action Source] Save Item list size',
props<{ itemListSize: number }>()
);
当你发送它时,
store.dispatch(saveItemListSizeNow({ itemListSize: givenSize }));
你的减速器会像这个
on(Itemctions.saveItemListSizeNow, (state, action) => {
const size = action.itemListSize;
return { ...state, initialItemListSize: size };
}),