react-navigation v5如何重置嵌套Stack Navigation导航器并传递params参数?
问题根因
你当前写法的核心问题是:React Navigation v5 中navigation.reset的配置对象不支持顶层params字段,所有参数都需要绑定到对应层级的路由条目上。如果ChatBot是嵌套在子Stack导航器内的页面,还需要完整声明父子层级的路由结构才能正确传参。
场景1:ChatBot为当前导航栈的直接页面
如果你的ChatBot没有嵌套在子Stack内,直接删除顶层params字段,把所有参数合并到路由条目的params中即可:
navigation.reset({ index: 0, routes: [ { name: 'ChatBot', params: { boxData: boxData, isBox: false } } ] });
修改后在ChatBot页面直接通过route.params即可获取所有参数。
场景2:ChatBot为嵌套子Stack导航器内的页面
如果你的导航层级为「根Stack导航器 → 子Stack导航器(父栈注册路由名如ChatStack)→ ChatBot页面」,需要通过路由的state字段嵌套声明子栈的重置规则:
navigation.reset({ index: 0, routes: [ { // 父栈中注册的子Stack导航器对应的路由名 name: 'ChatStack', // 给子Stack导航器本身传参写在这里 params: { isBox: false }, // 配置子栈的重置规则 state: { index: 0, routes: [ { name: 'ChatBot', params: { boxData: boxData } } ] } } ] });
该场景下:
- 子Stack导航器的相关组件可以获取到
isBox参数 - ChatBot页面可以获取到
boxData参数
内容的提问来源于stack exchange,提问作者deepanshu katyal
相关产品推荐
相关产品推荐

