簡體   English   中英

我應該如何在redux存儲中存儲isFetching / isLoading數據?

[英]How should I store isFetching/isLoading data in my redux store?

我正在尋找一種在redux中為實體/數據存儲isFetching的通用方法。 目前,我使用normalizr並將所有實體數據存儲在實體哈希中。 例如

{
   people: { ... },
   orders: { ... }
}

我當時正在考慮在每個實體(即人,訂單...)對象上定義一個屬性 ,以指定是否要獲取數據。 唯一的問題是,如果您執行Object.keys之類的操作,則將在數組中返回ID + isFetching的列表。 為了克服這個問題,我想將屬性設置為不可枚舉。

我的數據相當復雜,我不僅有2個實體,還為示例進行了簡化。 我正在尋找一種可以長期保存在我的代碼庫中的解決方案。

這是一個好的解決方案嗎? 我不想創建一個僅用於存儲元數據的新對象(盡管這是一個潛在的解決方案)。 有更好或更通用的方法嗎?

我知道這有點自以為是,但是redux問題指南將我指向了stackoverflow ...

注意我知道與Object.defineProperty的兼容性問題。 這是一個內部應用程序,每個人都使用最新版本的chrome。

更新

Redux存儲中的潛在實現

let initialState = {
  entities: {
    customers: null,
    orders: null
  }
};

Object.defineProperty(initialState.entities.customers, 
  'isFetching',
  {
    value: false,
    writable: true,
    enumerable: false
  });

Object.defineProperty(initialState.entities.orders, 
  'isFetching',
  {
    value: false,
    writable: true,
    enumerable: false
  });


export default initialState;

我認為定義不可枚舉的屬性將使您的代碼庫更難維護,因為在調試時,大多數情況下都隱藏了不可枚舉的屬性。

您可以按照normalizr的示例進行操作, normalizr元數據位於entities旁邊。 例如:

{
  customers: {
    entities: {/** contains your normalized customer list*/},
    isFetching: false
  },
  orders: {
    entities: {/** contains your normalized order list*/},
    isFetching: false
  }
}

這也將允許將來進一步擴展元數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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