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

expo-router的useSearchParams报错,求替代Hook适用场景及选型

问题解答

关于useSearchParams是否存在

在expo-router v2及后续版本中,useSearchParams已经被移除,官方将其拆分为useLocalSearchParams和useGlobalSearchParams两个Hook,这就是你报错的直接原因。

useLocalSearchParams与useGlobalSearchParams的适用场景

  • useLocalSearchParams:用于获取当前路由页面的本地搜索参数,这类参数仅对当前页面生效——比如从列表页跳转到详情页时携带的?id=xxx参数,只在详情页能读取到,不会影响其他路由栈的页面。
  • useGlobalSearchParams:用于获取全局共享的搜索参数,这类参数会作用于整个路由栈——比如在Tab导航的所有页面中需要共享的筛选条件,修改该参数会同步影响所有监听它的页面。

你的示例中应该选哪个?

你的代码是在JobDetails页面获取跳转时携带的job_id参数,属于当前页面的本地路由参数,因此应该使用useLocalSearchParams。

修改后的代码如下:

import { Stack, useRouter, useLocalSearchParams } from 'expo-router'

const JobDetails = () => {
  // 获取当前页面的路由参数
  const params = useLocalSearchParams();
  const router = useRouter();

  const { data, isLoading, error, refetch } = useFetch("job-details", {
    job_id: params.id,
  })

  return (
    <SafeAreaView style={{ flex: 1, backgroundColor: COLORS.lightWhite}}>
      <Stack.Screen></Stack.Screen>
    </SafeAreaView>
  )
}

export default JobDetails

内容的提问来源于stack exchange,提问作者user985216

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:57:44