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