【发布时间】: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