簡體   English   中英

如何在減速器中獲得 NGRX/實體長度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM