【问题标题】:Should I reset my redux store on each router navigation?我应该在每个路由器导航上重置我的 redux 存储吗?
【发布时间】:2017-10-22 12:53:36
【问题描述】:

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

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

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

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

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

解析器将加载 ID 为 resourceIdresourcetype1,以便我的页面开箱即用。

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

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

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

所以问题是:

  • 您如何看待这种反思?
  • 您对此有何习惯?
  • 您是否会在某个时候重置您的 redux 存储?

【问题讨论】:

    标签: angular redux ngrx


    【解决方案1】:

    这真的取决于你的应用程序!

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2020-01-14
      • 2016-10-20
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多