我对整个redux模式都很陌生。我不确定从服务器加载数据并将其添加到商店的最佳方法。
想象一下数据的双层层次结构:
每个用户都可以进行零对多付款。
根据我在网上收集的信息,最好在客户端存储规范化数据,但为了简单起见,让我们使用这个例子中的对象数组:
{
users: [],
payments: []
}
现在,如果我想显示一个用户的所有付款,我可以浏览商店中的所有付款并过滤掉具有预定义userId的付款。
或者,如果数据已完全规范化,则每个用户对象都会有一个名为payments的数组,其中包含属于该用户的付款的ID,并且可以通过这种方式提取它们。
如果所有现有数据都在商店中预先加载,那么一切正常,但是如果不可能(例如,如果使用了分页),还有其他选择吗?
是否有解决这些问题的标准方法?我在网上找到的所有例子都没有分层实体或预先加载所有数据。
答案 0 :(得分:2)
通常,您不希望在两个不同的位置拥有相同的数据,因此您将使用标准化版本并仅在不同位置存储ID。 您可以将状态视为本地数据库,您不希望在多个位置拥有相同的数据。如果您想拥有selectedUserPayments的集合,则应将其存储为ID列表。
如何为特定用户加载数据取决于您要使用的缓存策略。如果付款信息在服务器上经常发生变化,您可能希望每次都重新加载,并在每次选择用户时重新初始化付款数组。如果不经常更改,更实际的方法是检查选择用户的时间(如果有),如果没有,请从服务器读取它们并将其添加到状态。通过这种方式,访问之前选定的用户可以保存请求,因为您不需要再次获取付款。