【问题标题】:Delete redux state on navigating to a different route in react-redux application?在 react-redux 应用程序中导航到不同的路由时删除 redux 状态?
【发布时间】:2018-02-11 10:24:47
【问题描述】:

我正在编写一个 react-redux 应用程序,它有大约 4 条路线。我正在使用 react-router 导航到不同的路线。我的问题是,是否建议在导航到不同的路线时删除 redux 状态?

【问题讨论】:

  • 我假设 Redux 代表您的应用程序状态的所有,其中包括所有不同的路由。所以不,不要删除状态。这没有任何意义。
  • 是的,redux state 存储了所有路由的所有数据。我正在考虑仅删除我当前不在的路由所需的应用程序状态的那部分。
  • 考虑到我通过在 componentDidMount 生命周期方法上调用 API 服务器来加载数据,因此即使我不删除该路由的 redux 状态,我也不确定这对我有什么帮助?

标签: javascript reactjs redux react-router flux


【解决方案1】:

一般来说,当转换到应用程序中的另一条路线时,我不会说需要删除现有状态。如果你回到那部分,你可以更快地显示数据。你可能需要考虑当你回到它时是否需要刷新它。

【讨论】:

  • 由于我通过在 componentDidMount 生命周期方法上调用 API 服务器来加载数据,因此我不确定即使我不删除 redux 状态这对我有什么帮助?
  • 如果数据已经存在,如果适合您的用例,您可以跳过调用
  • 是的,这是有道理的。谢谢兄弟:)
【解决方案2】:

正如其他人所说,没有理由从 redux 中删除状态,即使您没有在当前路由中使用它。

您说您正在componentDidMount 上加载您的状态。您想在每次切换路由时重新加载服务器数据吗?因为如果没有,您可以在componentDidMount 中添加一个条件,以便仅在尚未加载数据的情况下从服务器重新加载数据。

【讨论】:

  • 实际上我不想在每次切换路由时都从服务器重新加载数据,因为我在路由上启用了自动刷新,这将确保从服务器获取最新的更新数据。唯一的技巧是知道从上次卸载经过的时间,以便我可以从服务器查询间隔(卸载到重新安装)期间发生的任何更改。
  • 只是一个建议。创建一个 unmountedTimestamps 减速器并在 componentWillUnmount 上调度一个带有路由名称和当前时间戳的操作
  • 这是很酷的建议,爱你兄弟 :) 爱 stackoverflow (y)
猜你喜欢
  • 2018-06-01
  • 2021-10-16
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多