假设我有一个ProductScreen
组件,可呈现有关产品的信息以及其他类似产品的列表。单击类似产品时,将使用不同的参数/键从ProductScreen
==> ProductScreen
进行导航。
我面临的问题是我想在React Navigation焦点事件上做一些事情(例如,滚动到顶部)
navigation.addListener('didFocus', () => {
console.log('didFocus')
scrollToTop()
})
我第一次看到组件呈现的日志,但是当从ProductScreen
==> ProductScreen
进行导航时,didFocus
事件似乎没有再次触发,因此该组件没有滚动到顶端。实际上,生命周期事件(willFocus
,didFocus
,willBlur
,didBlur
)似乎都没有触发。
从具有不同参数的组件X导航到组件X时,有什么方法可以使用反应导航生命周期事件?谢谢!
您正在导航到同一屏幕,因此didFocus
通常不会触发,因为屏幕已经聚焦。
如果要对参数更改做出反应,可以使用componentDidUpdate
/ useEffect
将以前的参数与新的参数进行比较,然后执行所需的操作。
如果要导航到新屏幕,则可以使用push
代替navigate