React native 在redux循环完成后,对本机生命周期方法作出反应以执行导航代码(导航到其他屏幕)

React native 在redux循环完成后,对本机生命周期方法作出反应以执行导航代码(导航到其他屏幕),react-native,redux,react-navigation,react-lifecycle,React Native,Redux,React Navigation,React Lifecycle,我正在我的应用程序中使用Redux和React导航,我正在进行一些API调用, 我有一个问题,在成功完成redux周期后,我应该使用react组件的哪个生命周期方法导航到下一个屏幕,为什么 用户在登录屏幕上显示其凭据后单击了登录 已执行登录重新复制操作并返回成功 成功后,我的登录屏幕道具被更改,我想重定向到下一个屏幕 在哪种方法中,我应该像这样放置导航代码 this.props.navigation.navigate(“DashoardScreen”); 当我通过不同的搜索,发现compon

我正在我的应用程序中使用Redux和React导航,我正在进行一些API调用, 我有一个问题,在成功完成redux周期后,我应该使用react组件的哪个生命周期方法导航到下一个屏幕,为什么

  • 用户在登录屏幕上显示其凭据后单击了登录
  • 已执行登录重新复制操作并返回成功
  • 成功后,我的登录屏幕道具被更改,我想重定向到下一个屏幕
  • 在哪种方法中,我应该像这样放置导航代码
this.props.navigation.navigate(“DashoardScreen”);

当我通过不同的搜索,发现
componentdiddupdate()
shoulldcomponentupdate()
将是执行这些内容的正确方法。
我应该考虑哪种方法?为什么?

你可能想使用<代码>组件Debug Update <代码>,因为这是在发生更新时被调用的最后一个东西。
另一方面,
shouldComponentUpdate
用于优化组件的渲染频率,例如,如果更新应触发重新渲染器或
false
否则,您如何
通过返回
true
对道具/状态更改作出反应。
通常不应在任何生命周期方法中调用它,but应该在异步登录操作返回成功后立即位于loginHandler(用于单击登录按钮的处理程序)中。

您不需要(理想情况下不应该)将导航逻辑放在登录组件中。如果有多个登录屏幕怎么办?你不想到处复制导航代码。如果你想在登录后但导航到应用程序之前放置中间屏幕怎么办?如果你想在某些情况下拦截登录,例如在naviga之前运行一些异步检查怎么办ting?如果你继续在组件中添加这种逻辑,它会很快变得一团糟


要在或(或任何其他处理程序)中调用navigate在您完成登录后。通常您实际上只能从
此.props
访问
导航,该道具仅在组件中可用,但这不是访问导航的唯一方式。要能够在组件外部导航,请使用如果是这种情况,那么我将如何在登录时进行UI更新,例如关闭UI加载r?您可以在返回成功后立即在导航到其他屏幕之前更新状态(控制UI加载程序是否应显示或关闭)。如果这可能导致在未安装组件时更新状态,则会发出警告(有时很可能在android上),您可以将导航到其他屏幕的超时时间设置为几毫秒。如果我有多个登录屏幕,则我会将该代码放入一个帮助器函数中,并可以将该函数与操作调用相同。此外,当应用程序增长时,使用NavigationService将是我管理导航堆栈的一个棘手部分。帮助器函数如这样做的缺点可能比看起来要多。如果您需要redux状态的某些部分来运行此逻辑,该怎么办?即使这些部分不直接属于组件,您是否只需将所有这些组件与redux状态的这些部分连接起来?然后在每次发生更改时更新每个组件中的此连接?如果您的组件是unm呢在这个函数完成运行之前,我也不理解最后一部分,从NavigationService导航与从propsIt导航几乎没有区别。它可以是一个纯函数,您可以从组件传递所有数据并进行导航,如果我们从特定组件调用此函数,那么我们可以传递状态映射因此,只有函数的调用组件才会在内存中,并且只有该组件才会更新。