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



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

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

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

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

在使用不同的参数从组件 X 导航到组件 X 时,有没有办法能够使用反应导航生命周期事件?谢谢!

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

如果你想对参数的变化做出反应,你可以使用componentDidUpdate/useEffect将以前的参数与新的参数进行比较,并做你需要做的事情。

如果要导航到新屏幕,可以使用push而不是navigate

最新更新