You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Navigation:StackNavigator导航离开后如何销毁页面?

如何在React Navigation中返回后销毁Create页面

嘿,这个问题我太熟悉了!在你用的旧版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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:33:53