我应该在每个路由器导航上重置我的redux商店吗?

时间:2017-05-22 18:48:13

标签: angular redux ngrx

我正在使用Angular编写我的应用程序,并使用 Redux 通过 ngrx / store 来存储我的应用程序状态。

一切正常,但是现在我的应用程序变得非常大,我得到了以下观察结果:

对于几乎每个页面/资源,我使用从后端获取的不同解析器,正确显示和处理此特定页面所需的所有数据。

此解析器允许我使此页面独立于应用程序的先前状态。

因此,如果应用程序已加载并启动,请说: https://myapp.com/resourcetype1/resourceId

解析程序会加载ID resourceId resourcetype1 ,以便我的网页能够开箱即用。

知道了, 我想知道在每个路由器导航开始时完全重置我的redux存储是否是个好主意

我认为这可能有两个好处:

  • 提供一个更清洁的redux商店,没有先前执行页面的残留数据。
  • 在每次“页面显示”之前提供一个空的商店,这有助于检测页面何时使用来自先前加载的页面的数据(如果使用其urm“直接”加载,则会崩溃)。

所以问题是:

  • 您如何看待这种反思?
  • 你有什么习惯?
  • 您是否在某个时间点重置您的redux商店?

1 个答案:

答案 0 :(得分:2)

这实际上取决于你的申请!

例如,如果您正在使用Redux,因为每个页面都有一组要处理的复杂数据,但每个页面都完全独立于其他页面,也许您可​​能希望在每次更改之间清除它。

虽然感觉有点奇怪。您正在谈论的资源是什么?你不会回到以前的资源吗?

在我的一个应用程序中,我确实有工作区。每个工作区都可以包含大量数据。用户不会经常更改他们的工作区,当他们这样做时,他们可能不会回到前一个工作区。因此,每当用户导航到另一个工作区时,我都会清理(几乎)所有的Reducer。

但是,只要用户在同一个工作区,我就会保留大部分信息。这很好,因为在用户刚开始选择工作区时,它几乎没有任何内容。然后,当他在一些细节中导航时,应用程序将获取数据并将其存储在相应的reducer中。

因此,当用户返回查看某些数据时,第一次在应用程序获取数据时出现延迟,第二次和+,用户会看到已经进入商店的内容(立即)。当然,它仍然会尝试获取数据以确保它是最新的,但如果它没有改变,用户就可以在呼吸中与它进行交互。