在Redux循环完成后,使用React Native生命周期方法执行导航代码(导航到其他屏幕)

我在应用中使用Redux和React Navigation,在其中我进行了一些API调用, 我有一个问题,在成功完成Redux周期后,应使用哪种React组件生命周期方法导航到下一个屏幕,为什么?

  • 用户将其凭据放在“登录屏幕”上后,单击了登录名。
  • 执行登录redux操作并返回成功
  • 成功后,我的登录屏幕道具被更改,我想重定向到下一个屏幕。
  • 我应该在哪种方法中放入导航代码

this.props.navigation.navigate("DashoardScreen');

经过各种搜索后,我发现componentDidUpdate()shouldComponentUpdate()将是执行此操作的正确方法。 我实际上应该考虑哪种方法,为什么?

leqihuan 回答:在Redux循环完成后,使用React Native生命周期方法执行导航代码(导航到其他屏幕)

您可能要使用componentDidUpdate,因为这是发生更新时要调用的最后一件事。

另一方面,shouldComponentUpdate用于优化组件的渲染频率,例如如果更新应触发重新渲染,则如何返回REACT,如何true来更改道具/状态,否则返回false

,

通常不应在任何生命周期方法中调用它,而应在异步登录操作返回成功后立即在您的loginHandler(用于单击登录按钮的句柄)内部。

,

您不需要(理想情况下也不需要)将导航逻辑放入Login组件中。如果有多个登录屏幕怎么办?您不想将导航代码复制到任何地方。如果您要在登录后但导航至该应用程序之前放置中间屏幕该怎么办?如果您希望在某些情况下拦截登录信息,例如在导航之前运行一些异步检查?如果您继续在组件中添加此逻辑,它将很快变得一团糟

登录完成后,您想在thunksaga(或您拥有的其他处理程序)中调用Navigation。通常,实际上,您实际上仅从{{ 1}},它仅在组件中可用,但这不是访问导航的唯一方法。为了能够在组件外部导航,请使用Navigating without the navigation prop

本文链接:https://www.f2er.com/2777785.html

大家都在问