我有来自节点后端的以下数据:
端点:
/user/:id?startDate=2011-10-05T14:48:00.000Z&endDate=2011-10-05T14:48:00.000Z
[
{
"name": "Tom",
"createdAt": "2011-10-05T14:48:00.000Z",
"updatedAt": "2011-10-05T14:48:00.000Z",
...
"metadata": {
"activeHours": 134.45,
"afkHours": 134.45
}
},
{
...
}
]在这些数据中,唯一在日期更改之间进行修改的是activeHours和afkHours。
必须在所有页面上同步这些用户和调用端点的日期。
简单的方法是将其放入用户还原器中,如下所示:
{
users: [...],
startDate: "",
endDate: ""
}但是,我目前正在对这些用户使用normalizr,并且有一个名为ADD_ENTITIES的操作。拥有实体缩减器似乎非常有益,因为我们确实有其他实体,可以很好地与这些用户标准化,但是我不想污染实体状态,几乎是“挂在”startDate和endDate上,以便在所有页面上同步。
关于我的问题:
是否有更好的方法来使用normalizr来建模这个问题,其中键不仅是ID,而且是日期范围?
还是我应该像上面那样把它分解成一个独立的减速机?
发布于 2018-11-26 11:29:41
不知道我是否完全理解这里的问题。
对于每个用户,startDate和endDate字段是不同的吗?如果是,则可能需要为这些用户在规范化实体对象中添加这些字段。
如果这些是所有用户的公共字段,则可以创建一个名为userDateRange的单独实体,其中包含这两个键。它不需要标准化,因为它们是原始字段。
{
"entities": {
"user": {
"byId": {
"user1": {},
"user2": {}
},
"allIds": [
"user1",
"user2"
]
}
},
"ui": {
"userDateRange": {
"start": "2011-10-05T14:48:00.000Z",
"end": "2011-10-05T14:48:00.000Z"
}
}
}https://stackoverflow.com/questions/53479757
复制相似问题