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

react-navigation v5如何重置嵌套Stack Navigation导航器并传递params参数?

React Navigation v5 嵌套Stack导航reset传参解决方案

问题根因

你当前写法的核心问题是: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:01