Reaction Navigation v4生命周期事件在导航到同一屏幕时不会触发

问题描述 投票:0回答:1

假设我有一个ProductScreen组件,可呈现有关产品的信息以及其他类似产品的列表。单击类似产品时,将使用不同的参数/键从ProductScreen ==> ProductScreen进行导航。

我面临的问题是我想在React Navigation焦点事件上做一些事情(例如,滚动到顶部)

navigation.addListener('didFocus', () => {
  console.log('didFocus')
  scrollToTop()
})

我第一次看到组件呈现的日志,但是当从ProductScreen ==> ProductScreen进行导航时,didFocus事件似乎没有再次触发,因此该组件没有滚动到顶端。实际上,生命周期事件(willFocusdidFocuswillBlurdidBlur)似乎都没有触发。

从具有不同参数的组件X导航到组件X时,有什么方法可以使用反应导航生命周期事件?谢谢!

react-native react-navigation react-navigation-stack
1个回答
0
投票

您正在导航到同一屏幕,因此didFocus通常不会触发,因为屏幕已经聚焦。

如果要对参数更改做出反应,可以使用componentDidUpdate / useEffect将以前的参数与新的参数进行比较,然后执行所需的操作。

如果要导航到新屏幕,则可以使用push代替navigate

© www.soinside.com 2019 - 2024. All rights reserved.