导航到下一个屏幕时,再次安装所有先前的屏幕,反应导航5倍

时间:2020-05-06 18:30:02

标签: react-native

例如,我们在StackNavigator1的屏幕A上,该屏幕具有屏幕:A,B,C。当导航到屏幕B时,将再次安装A屏幕!当您从B转到C时,将再次安装A和B,依此类推。

如文档(https://reactnavigation.org/docs/en/navigation-lifecycle.html)中所述,

考虑一个带有屏幕A和B的堆栈导航器。导航到A后,将调用其componentDidMount。推入B时,它的componentDidMount也被调用,但是A保持安装在堆栈上,因此它的componentWillUnmount不被调用。

但是这样是行不通的!导航到下一个屏幕时,堆栈中的所有屏幕将继续安装。而且,除了性能方面的考虑外,如果您在componentDidMount()或useEffect(()=> APIcall(),[])钩子中进行API调用,则每次导航到新屏幕时都会调用该钩子,并导致各种错误!

1 个答案:

答案 0 :(得分:0)

我知道了,

当我们将导航器包装在另一个组件中时,正在发生重新安装,将导航器简单地放置在顶层组件上。

问题已为我解决