如何在 Redux 中处理列表和单个元素的不同 api
How to handle different api for list and single element in Redux
大家好
我有以下问题。
假设我们有一个表示设备列表的应用程序
并且用户可以进入单个设备的卡片并查看有关它的全部信息。
我们的api看起来如下:
对于列表:
[
{ name: 'Device 1', id: 1 },
{ name: 'Device 2', id: 2 },
{ name: 'Device 3', id: 3 },
{ name: 'Device 4', id: 4 }
]
对于单个设备:
{
name: 'Device 1',
id: '1',
elements: [{
type: 'switch',
name: 'socket'
}, {
type: 'multilevel',
name: 'bulb'
}],
room: {
name: 'living',
id: 2
}
}
如您所见,设备列表的 api 更轻量级。我们不想为列表发出更多的数据库请求,也不想让用户为列表获取不必要的数据。
现在,假设用户可以在设备卡中编辑 'name' 设备,例如。
我应该如何处理我的状态?
我应该将此状态存储在两个地方吗?
或者我应该这样处理我的状态树:
应用程序获取列表和我标记为 'complete: false'
的每个设备对象
{
'1': {
id: 1,
name: 'Device 1',
complete: false
},
'2': {
id: 2,
name: 'Device 2',
complete: false
}
}
但是,当用户使用卡时,我们获取整个设备数据,然后分配给我们的列表对象,'complete' 标志等于 'true'。
并且在两个地方处理状态的问题都消失了。
任何帮助将不胜感激。
我宁愿商店中没有重复数据,因为这会导致所有常见问题(正如您已经提到的)。所以我的首选模型是第二个模型,其中包含所有列表条目的列表或地图。选择列表还是地图取决于您的要求,例如固定顺序,地图无法轻松实现。
我不会为了完整性而引入标志,而是让对象数据自行确定。在您的情况下,如果 !entry.elements && !entry.room
,则对象尚未完成,您需要获取其他数据并将其添加到对象中。我不会有标志,因为标志是冗余信息,可能会再次不同步。
大家好
我有以下问题。 假设我们有一个表示设备列表的应用程序 并且用户可以进入单个设备的卡片并查看有关它的全部信息。
我们的api看起来如下:
对于列表:
[
{ name: 'Device 1', id: 1 },
{ name: 'Device 2', id: 2 },
{ name: 'Device 3', id: 3 },
{ name: 'Device 4', id: 4 }
]
对于单个设备:
{
name: 'Device 1',
id: '1',
elements: [{
type: 'switch',
name: 'socket'
}, {
type: 'multilevel',
name: 'bulb'
}],
room: {
name: 'living',
id: 2
}
}
如您所见,设备列表的 api 更轻量级。我们不想为列表发出更多的数据库请求,也不想让用户为列表获取不必要的数据。
现在,假设用户可以在设备卡中编辑 'name' 设备,例如。
我应该如何处理我的状态? 我应该将此状态存储在两个地方吗?
或者我应该这样处理我的状态树: 应用程序获取列表和我标记为 'complete: false'
的每个设备对象{
'1': {
id: 1,
name: 'Device 1',
complete: false
},
'2': {
id: 2,
name: 'Device 2',
complete: false
}
}
但是,当用户使用卡时,我们获取整个设备数据,然后分配给我们的列表对象,'complete' 标志等于 'true'。 并且在两个地方处理状态的问题都消失了。
任何帮助将不胜感激。
我宁愿商店中没有重复数据,因为这会导致所有常见问题(正如您已经提到的)。所以我的首选模型是第二个模型,其中包含所有列表条目的列表或地图。选择列表还是地图取决于您的要求,例如固定顺序,地图无法轻松实现。
我不会为了完整性而引入标志,而是让对象数据自行确定。在您的情况下,如果 !entry.elements && !entry.room
,则对象尚未完成,您需要获取其他数据并将其添加到对象中。我不会有标志,因为标志是冗余信息,可能会再次不同步。