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

Expo Router Link二次及以上跳转无法传递参数问题排查

问题原因与解决方法

问题出在参数传递的字段使用错误:

  • Expo Router的Link组件中,href对象里的params是给动态路由的路径参数用的(比如路由是/page2/[id]时,用来填充id的路径值);
  • 而你用useSearchParams()获取的是URL查询参数(即?id=10&name=Test格式的参数),这类参数需要放在query字段里传递。

之前的写法中,首次跳转时组件是全新挂载,路由初始化时意外读取到了params的值,但返回后再次跳转时,Expo Router复用了缓存的page2路由实例,错误的参数传递方式导致useSearchParams()无法获取到更新后的参数,返回undefined。

修改后的代码

<Link href={{
       pathname: '/page2',
       query: { // 将params替换为query
          id: 10,
          name: "Test", 
         } 
      }}
>
   <Text>Go to page 2</Text>
</Link>

<Link href={{
       pathname: '/page1',
      }}
>
   <Text>Go to page 1</Text>
</Link>

补充说明:如果你的page2是动态路由(比如app/page2/[id]/index.js结构),那确实需要用params传递参数,但此时获取参数要使用useLocalSearchParams()而非useSearchParams()。从你的需求来看,使用query字段传递查询参数才是正确匹配useSearchParams()的用法。

内容的提问来源于stack exchange,提问作者Abraham G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:07:07