React Navigation:StackNavigator导航离开后如何销毁页面?
嘿,这个问题我太熟悉了!在你用的旧版React Navigation StackNavigator里,要实现从Create页面返回List后销毁Create页面,核心是换个导航方法就行,我给你两种靠谱的方案:
方案一:用navigation.replace('List')替代navigation.navigate('List')
你现在用的navigation.navigate('List')其实只是切换到栈中已存在的List页面,但Create页面还留在栈里,并没有被销毁。而replace方法会直接把当前的Create页面从导航栈中移除,用List页面替换它,这样栈里就只剩List了,Create页面自然就被销毁了。
修改你的DrugCreate组件里的返回逻辑就行:
// 原来的代码 navigation.navigate('List'); // 改成下面这样 navigation.replace('List');
方案二:如果List是栈的根页面,用navigation.popToTop()
因为你的StackNavigator初始路由是List,它是栈的根页面,这时候用popToTop()会直接回到栈的最顶部(也就是List页面),同时移除栈中所有在它之上的页面(包括Create),效果和replace完全一样,而且写法更简洁:
navigation.popToTop();
为什么原来的navigate不行?
简单说下原理:StackNavigator的栈结构是“后进先出”的,navigate到已存在的页面时,只会切换到该页面的栈位置,不会删除中间的页面。所以你之前返回List后,Create页面还在栈里,按返回键还能回去。而上面两种方法都会把Create页面从栈中移除,彻底销毁它。
内容的提问来源于stack exchange,提问作者izikandrw
相关产品推荐
相关产品推荐

