【问题标题】:What are the benefits of using redux to manage navigation state?使用 redux 管理导航状态有什么好处?
【发布时间】:2020-02-02 07:03:09
【问题描述】:

如果您正在使用诸如 react-navigation 之类的导航库,那么如果 react-navigation 已经管理它,那么使用 redux 来管理 导航状态 的麻烦有什么意义? ?似乎它必然会使设置过于复杂。

例如,浏览屏幕看起来更痛苦:

navigate = () => {
  const navigateScreens = NavigationActions.navigate({
    routeName: "OtherScreen",
    params: {someProperty: "someValue"}
  })
  this.props.navigation.dispatch(navigateScreens);
}:

而不仅仅是 react-navigation 的:

this.props.navigation.navigate("OtherScreen")

ReactNavigation 文档特别指出:“我也可以将导航状态存储在 Redux 中吗?这在技术上是可行的,但我们不建议这样做 - 这太容易让自己陷入困境并减慢/破坏您的应用程序。我们鼓励您将其留给 React Navigation 来管理导航状态。”

因此,经历所有这些额外的事情一定会有一些巨大的好处……对吧?有哪些 redux 管理导航状态的实际用例/场景,值得这种权衡和忽略 react-nav 文档?

【问题讨论】:

  • 可能是时间旅行/复制能力。但我可能希望最常见的论点是一致性。当你是一把锤子时,一切都开始看起来像钉子。我当然不喜欢使用 redux 的时间。我相信它是有目的的,但是对于大约 95% 的打算使用它的 Web 应用程序来说,事情过于复杂了。对于真正从中受益的应用程序,也许他们也会从将其与导航绑定在一起中受益。
  • React Navigation v5 与 Redux Devtools Extension 集成(它实际上并不使用 Redux)并且还支持时间旅行调试,以及日志状态、操作等。

标签: react-native redux react-redux react-navigation


【解决方案1】:

仅仅为了管理路线可能不值得实施。如果您有大量全局数据和大型组件树,那么 Redux 设置非常值得。但是,如果您只是想管理一个甚至几个数据点,则最好采用一种更简单的策略,即手动将 props 传递到树中。

【讨论】:

    【解决方案2】:

    除了维护历史记录或返回按钮android功能在redux中存储导航状态没有好处!

    此外,如果您想知道用户去过哪些屏幕以及从哪个屏幕导航发生,您可以使用 redux nav 状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 2017-08-28
      相关资源
      最近更新 更多