React Native嵌套导航:跳转至嵌套页后如何跳过中间页返回?
解决返回时跳过中间路由的问题
核心原因
你当前通过嵌套navigate的写法,会把menu、menu/sessions依次加入导航栈,所以返回时会按栈的顺序依次回溯这两个页面。要实现直接回到home,需要修改导航栈的结构,避免把中间页加入栈中。
具体实现方案
方案一:用navigation.reset重置导航栈
直接重置整个导航栈,只保留home和目标页面menu/sessions/record,这样返回时会直接回到home:
navigation.reset({ index: 1, routes: [ { name: 'home' }, // 固定保留首页在栈底 { name: 'menu', params: { initial: false, screen: 'menu/sessions', params: { initial: false, screen: 'menu/sessions/record', params: { sessionId: session.id, }, }, }, }, ], });
方案二:用navigation.replace替换当前路由
如果跳转前导航栈中只有home这一个页面,可以用replace替换当前路由,这样栈中只会存在目标嵌套路由,返回时直接回到home:
navigation.replace('menu', { initial: false, screen: 'menu/sessions', params: { initial: false, screen: 'menu/sessions/record', params: { sessionId: session.id, }, }, });
方案对比
reset方法更灵活,能精准控制栈内保留的路由,适合需要明确保留首页的复杂场景。replace写法更简洁,适合栈结构简单(仅首页在前)的场景。
内容的提问来源于stack exchange,提问作者mdmb
相关产品推荐
相关产品推荐

