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