Expo Router无法传递链接作为参数:React Native导航跳转报错求助
解决React Native导航传递URL参数失败的问题
问题原因
直接在导航URL的query参数里传入完整HTTPS URL,会破坏整个URL的规范结构,导致iOS系统解析时判定参数非法,触发NSOSStatusErrorDomain Code=-50错误。
解决方法
编码URL参数
跳转前用encodeURIComponent()对图片URL转义,将特殊字符转换为合法的URL格式:// 跳转页面时处理参数 const imageUrl = "https://www.google.com/"; const encodedImageUrl = encodeURIComponent(imageUrl); navigation.navigate('Detail', { id: 1, image: encodedImageUrl });解码还原参数
在详情页获取参数后,用decodeURIComponent()恢复原始URL:// 详情页解析参数 const { id, image } = route.params; const originalImageUrl = decodeURIComponent(image);Deep Link场景适配
如果用Deep Link跳转,要确保生成的链接里query参数是编码后的格式,示例如下:/tabs/detail?id=1&image=https%3A%2F%2Fwww.google.com%2F
额外提示
- 所有包含
://、/、?这类特殊字符的参数,都建议做URL编码,避免导航解析失败。 - React Navigation的Shared Element功能不受编码影响,解码后正常使用图片URL即可实现元素共享效果。
内容的提问来源于stack exchange,提问作者Sinan Öztürk
相关产品推荐
相关产品推荐

