在檔案中,我找到了一個使用 的簡單示例sortComparer,問題是我們只按名稱排序,如果我想按不同的屬性進行排序,我必須以某種方式提供有關鍵/屬性的資訊。我知道我可以繼續對每個物體中的資訊進行排序,但我不想復制它......我更喜歡從主狀態中獲取它......我可以以某種方式注入一個可以從主狀態傳遞sort狀態的服務嗎?狀態?
減速機.ts
export function advancedSorting(a, b): any {
const sortState = { key: 'name', order: 1 }; // temporary mock - get sort state from main store
const itemA = a[sortState.key];
const itemB = b[sortState.key];
return itemA < itemB
? -1 * sortState.order
: itemA > itemB
? sortState.order
: 0;
}
export const adapter: EntityAdapter<ProductDetails> =
createEntityAdapter<ProductDetails>({
sortComparer: advancedSorting
});
export const initialState: ProductsState = adapter.getInitialState({
productType: null,
productTags: [],
sort: {
key: 'name',
order: 1
}
});
uj5u.com熱心網友回復:
Reducers 是純粹的,@ngrx/entity 也是如此。您也不能從減速器中參考另一個減速器(狀態)。
相反,我建議使用一個選擇器來檢索兩個狀態切片并對選擇器中的集合進行排序。
uj5u.com熱心網友回復:
我無法在@timdeschryver 的回答中添加評論,但我同意他的觀點。
只是為了添加我的 2 美分并詳細說明。
根據我的理解,這是適合您情況的最佳實踐,因為您的排序似乎與應用程式的“視圖”而非物體的實際狀態更相關,因此最好在選擇器中對其進行排序。因為您的物體只是為了保存與物體相關的資訊,而不是如何“查看”它。
就個人而言,有一半時間,我不需要對物體進行排序,因為我在選擇器中完成所有排序,因為它可能與某處的分頁器或我的應用程式中的其他狀態有關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339576.html
