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