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

使用Expo Router传递数组参数失败的问题求助

解决Next.js路由传递数组变为字符串的问题

问题核心:useLocalSearchParams获取的是URL查询参数,而URL参数仅支持字符串类型,所以传递数组时会被自动转为逗号分隔的字符串,导致无法用数组索引访问元素。

方案一:JSON序列化传递(适合需要URL携带参数的场景)

传递时把数组转成JSON字符串,接收时再解析回数组:

传递方代码:

const navigation = useRouter();
const cars = ["Saab", "Volvo", "BMW"];
navigation.push({
  pathname: '/screen2',
  params: { carList: JSON.stringify(cars) }
})

接收方代码:

const response = useLocalSearchParams();
// 处理参数不存在的情况,避免JSON.parse报错
const carList = response.carList ? JSON.parse(response.carList) : [];
console.log(carList[0]); // 输出 "Saab"

方案二:用路由state传递(适合不需要URL暴露参数的场景)

这种方式不会把参数放到URL中,直接通过路由的state传递数组,更安全:

传递方代码:

const navigation = useRouter();
const cars = ["Saab", "Volvo", "BMW"];
// push的第二个参数就是state
navigation.push('/screen2', { carList: cars });

接收方代码:

const router = useRouter();
// 用可选链避免state不存在时报错
const carList = router.state?.carList || [];
console.log(carList[0]); // 输出 "Saab"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:17:08