在 react-navigation 中使用 redux 集成有什么好处?
what is the advantage of using redux integration in react-navigation?
根据react-navigation中的documentation, we can use Redux集成,但是使用集成的优势是什么?
如果我们不将导航与 Redux 集成会怎样?
如果我不在我的应用程序中使用它,我的应用程序仍然可以运行,那么为什么我必须使用它?
提前致谢。
简短回答: React Navigation 在没有 Redux 的情况下也能正常工作。如果您已经在应用的其他部分使用 Redux,那么我建议将您的导航与 Redux 集成。但是,我不会为了支持导航而安装和集成Redux。
长答案:在react-navigation中使用Redux的优势与一般使用Redux的优势相同。您应该决定 Redux 是否适合您的应用程序整体,如果适合,请考虑将 Redux 集成到您的导航中。有一个excellent article linked on the Redux website讨论了Redux的优缺点。
Redux 提供了一个全局状态,可以从您应用中的任何组件访问。它允许您将该状态或该状态的子集作为 props 传递给任何组件。这有一些有用的优点:
- 您可以在一个地方维护状态,而不必跟踪各个组件中的状态。
- 您可以轻松地将您的状态保存到本地存储或服务器以供以后使用。
- 如果操作得当,您可以找到 "undo" 踪迹。
- 您可以将大部分业务逻辑移至 Redux 中,从而允许您在多个视图中重用业务逻辑。
- 您可以调度正常的 redux 操作来导航,例如:
dispatch({type: 'GoToChatScreen'})
但是,Redux 要求您执行以下操作(直接取自 article):
- 将应用程序状态描述为普通对象和数组。
- 将系统中的更改描述为普通对象。
- 将处理更改的逻辑描述为纯函数。
这需要对您的业务逻辑采用非常系统和规范的方法,如果您的应用程序很小,这实际上可能会增加代码的复杂性。
归根结底,Redux 是一种在 React 应用程序中表示状态和数据的有用且流行的方式,但它并不适用于每个人和每个用例。
如果您选择在您的应用程序中使用 Redux,那么将您的导航合并到 Redux 中可为您提供正常的 Redux 优势。您的导航可以持久化,具有 "undo" 历史记录,受益于中央日志记录等。
如果您已经在应用的其他部分使用 Redux,我的建议是将您的导航合并到 Redux 中。但是,仅仅为了支持导航而合并 Redux 是不值得的。
如果您将 Redux 集成到您的 React Native 应用程序中,您将能够轻松地在开发中的热代码重新加载中保持状态。
如果您让 react-navigation 保持导航状态 (statefull),您的应用将在代码重新加载时返回到导航的根目录。
使用 Redux,您可以更轻松地恢复应用程序的状态并直接返回到您正在处理的屏幕,因此可以更快地开发您的应用程序。
这也可以在没有 Redux 的情况下实现,只要您可以在重新加载时控制您的应用程序状态,但 Redux 对此有好处,因为热代码重新加载一直是 Redux 的主要焦点,这个过程有详细记录。
根据react-navigation中的documentation, we can use Redux集成,但是使用集成的优势是什么?
如果我们不将导航与 Redux 集成会怎样?
如果我不在我的应用程序中使用它,我的应用程序仍然可以运行,那么为什么我必须使用它?
提前致谢。
简短回答: React Navigation 在没有 Redux 的情况下也能正常工作。如果您已经在应用的其他部分使用 Redux,那么我建议将您的导航与 Redux 集成。但是,我不会为了支持导航而安装和集成Redux。
长答案:在react-navigation中使用Redux的优势与一般使用Redux的优势相同。您应该决定 Redux 是否适合您的应用程序整体,如果适合,请考虑将 Redux 集成到您的导航中。有一个excellent article linked on the Redux website讨论了Redux的优缺点。
Redux 提供了一个全局状态,可以从您应用中的任何组件访问。它允许您将该状态或该状态的子集作为 props 传递给任何组件。这有一些有用的优点:
- 您可以在一个地方维护状态,而不必跟踪各个组件中的状态。
- 您可以轻松地将您的状态保存到本地存储或服务器以供以后使用。
- 如果操作得当,您可以找到 "undo" 踪迹。
- 您可以将大部分业务逻辑移至 Redux 中,从而允许您在多个视图中重用业务逻辑。
- 您可以调度正常的 redux 操作来导航,例如:
dispatch({type: 'GoToChatScreen'})
但是,Redux 要求您执行以下操作(直接取自 article):
- 将应用程序状态描述为普通对象和数组。
- 将系统中的更改描述为普通对象。
- 将处理更改的逻辑描述为纯函数。
这需要对您的业务逻辑采用非常系统和规范的方法,如果您的应用程序很小,这实际上可能会增加代码的复杂性。
归根结底,Redux 是一种在 React 应用程序中表示状态和数据的有用且流行的方式,但它并不适用于每个人和每个用例。
如果您选择在您的应用程序中使用 Redux,那么将您的导航合并到 Redux 中可为您提供正常的 Redux 优势。您的导航可以持久化,具有 "undo" 历史记录,受益于中央日志记录等。
如果您已经在应用的其他部分使用 Redux,我的建议是将您的导航合并到 Redux 中。但是,仅仅为了支持导航而合并 Redux 是不值得的。
如果您将 Redux 集成到您的 React Native 应用程序中,您将能够轻松地在开发中的热代码重新加载中保持状态。
如果您让 react-navigation 保持导航状态 (statefull),您的应用将在代码重新加载时返回到导航的根目录。
使用 Redux,您可以更轻松地恢复应用程序的状态并直接返回到您正在处理的屏幕,因此可以更快地开发您的应用程序。
这也可以在没有 Redux 的情况下实现,只要您可以在重新加载时控制您的应用程序状态,但 Redux 对此有好处,因为热代码重新加载一直是 Redux 的主要焦点,这个过程有详细记录。