在Redux中异步维护状态完整性
假设我有一个Redux商店。其状态具有在Redux中异步维护状态完整性,redux,react-redux,Redux,React Redux,假设我有一个Redux商店。其状态具有userCoordinates字段 使用用户的当前坐标: { userCoordinates: [3.1457, 2.1728], ... } { ... nearbyFriends: ["Bob", "Jimmy"], nearbyShops: ["Point & Click tools", "Bobby Ray's"], address: "42 Enth Street, Townsville,
userCoordinates
字段
使用用户的当前坐标:
{
userCoordinates: [3.1457, 2.1728],
...
}
{
...
nearbyFriends: ["Bob", "Jimmy"],
nearbyShops: ["Point & Click tools", "Bobby Ray's"],
address: "42 Enth Street, Townsville, Countryland",
weather: "Cloudy",
...
}
然后假设存储区还有20个字段,其中包含的数据取决于
坐标:
{
userCoordinates: [3.1457, 2.1728],
...
}
{
...
nearbyFriends: ["Bob", "Jimmy"],
nearbyShops: ["Point & Click tools", "Bobby Ray's"],
address: "42 Enth Street, Townsville, Countryland",
weather: "Cloudy",
...
}
所有这些字段中的值都是通过HTTP从
各种服务,每个字段一个单独的请求
现在假设更新了用户的地理位置,并发送了一个操作
更改用户坐标的值:
dispatch(updateCoords([1.6180, 1.4142]));
现在,userCoordinates
有了新的坐标,所有其他20个字段都有无效数据
根据架构的不同,我会做两件事中的一件 1:比较减速器中的状态。如果状态中的用户坐标发生变化,您可以向存储添加类似于
updateNeeded:true
的内容,然后在加载其他数据的任何位置进行检查,这样,如果updateNeeded
为true,您就可以启动ajax调用从服务器获取新数据
2:如果设置正确,您可以使用组件将接收道具
来比较道具。如果用户坐标发生变化
,则发送操作以获取其他数据字段
当然,如果您只需一次调用就可以获得所有数据,那么这会更容易…根据架构的不同,我会做以下两件事之一 1:比较减速器中的状态。如果状态中的用户坐标发生变化,您可以向存储添加类似于
updateNeeded:true
的内容,然后在加载其他数据的任何位置进行检查,这样,如果updateNeeded
为true,您就可以启动ajax调用从服务器获取新数据
2:如果设置正确,您可以使用组件将接收道具
来比较道具。如果用户坐标发生变化
,则发送操作以获取其他数据字段
当然,如果您只需一次调用就可以获得所有数据,这会更容易…我已经尝试过这种方法,但根据我的经验,这种方法无法扩展。想象一下,拥有40个组件,并在代码中编写和维护这些道具/挂载挂钩!更不用说处理重复的请求了。在这一点上,我会更好地使用标准的React。我已经尝试过这种方法,但在我的经验中它是不可伸缩的。想象一下,拥有40个组件,并在代码中编写和维护这些道具/挂载挂钩!更不用说处理重复的请求了。在这一点上,我会更好地与标准反应。