在Redux中异步维护状态完整性

时间:2017-07-30 01:28:14

标签: redux react-redux

假设我有一个Redux商店。其状态为userCoordinates字段 使用用户的当前坐标:

{
    userCoordinates: [3.1457, 2.1728],
    ...
}

然后假设商店还有20个字段,其中的数据依赖于 坐标:

{
    ...
    nearbyFriends: ["Bob", "Jimmy"],
    nearbyShops: ["Point & Click tools", "Bobby Ray's"],
    address: "42 Enth Street, Townsville, Countryland",
    weather: "Cloudy",
    ...
}

所有这些字段中的值都是通过HTTP加载的 各种服务,每个领域的单独请求。

现在假设用户的地理位置已更新,并且会调度该操作 更改userCoordinates

的值
dispatch(updateCoords([1.6180, 1.4142]));

现在userCoordinates有新坐标,所有其他20个字段都有无效数据。

  1. 如果目标只是让所有字段“最终”有效,那么我在哪里提出获取新数据的请求?
  2. 如果我使用React-Redux,方法会如何变化,并且有很多组件使用这些字段的许多不同组合,有些字段被多个组件使用而某些字段根本没用过?

1 个答案:

答案 0 :(得分:0)

根据它的架构方式,我会做两件事之一。

1:比较减速机中的状态。如果状态中的用户坐标发生了变化,您可以向商店添加一些内容,例如updateNeeded: true,然后检查加载其他数据的位置,以便updateNeeded为真,触发ajax调用以从服务器获取新数据。

2:如果设置正确,您可以使用componentWillReceiveProps来比较道具。如果userCoordinates发生更改,请发送操作以获取其他数据字段。

当然,如果您只需一次通话即可获得所有数据,这会更容易......