如何指定索引回退到导航栈中根页面之前的指定层级页面?
实现指定层级回退的方案
你之前调用的popToTop()是固定回退到导航栈根页面的API,确实不支持指定回退层级,主流导航/路由库都提供了更灵活的按层数回退的原生API,无需指定目标页面路由名即可实现你的需求:
React Navigation(React Native 场景)
pop()方法支持传入数字参数,代表要回退的页面层数:
你当前的导航栈是 A -> B -> C -> D,从D回退到B需要回退2层,直接在取消按钮的点击逻辑中调用即可:
navigation.pop(2)
注意:如果传入的层数大于当前导航栈的总长度,会自动回退到栈根页面,不会抛出异常
Vue Router 场景
调用go()方法,传入负数即为回退对应层数:
// 选项式API写法 this.$router.go(-2) // Composition API 写法 import { useRouter } from 'vue-router' const router = useRouter() router.go(-2)
React Router 场景(v6及以上版本)
使用useNavigate钩子实现层级回退:
import { useNavigate } from 'react-router-dom' // 组件内调用 const navigate = useNavigate() // 取消按钮点击时执行 navigate(-2)
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

