![](/img/trans.png)
[英]Angular 8 ngrx store how to get reducer value without subscribe callback?
[英]How to get NGRX/Entity length in the reducer?
在一個客戶項目中,我使用 NGRX/Store 和 NGRX/Entity。
雖然商店的大部分由實體組成,但我必須在 state 中存儲其他值。 出於業務原因,我需要某個時間點的所有項目的長度。
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 上的實體。
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 };
}),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.