我在 React Native Expo 项目中遇到一个问题,我使用 Expo Router 在屏幕之间传递 photoURL 作为参数,但收到的值与原始值不同。我将照片存储在 firebase 存储中。这是我的设置的简化概述:
我有一个主屏幕,可以在其中获取用户数据(包括 photoURL),并在地图上按下标记时导航到另一个屏幕(我们称之为 Screen2)。我使用 Expo Router 的导航道具将 photoURL 作为参数传递给 Screen2 屏幕。
这是我导航到 Screen2 的主屏幕中的相关代码片段:
const onMarkerPressed = useCallback((userData) => {
const userparams = { userData: JSON.stringify(userData), photoURL: userData.photoURL };
router.navigate({ pathname: '/screen2', params: userparams });
}, [userLocation]);
这是我在 Screen2 中访问 photoURL 的方法:
const params = useLocalSearchParams();
const { photoURL } = params;
console.log("photoURL", photoURL)
问题在于,Screen2 中收到的 photoURL 与主屏幕中获取的原始 photoURL 不同。
我检查了数据流并确认从主屏幕作为参数传递的 photoURL 是正确的。但是,当我在 Screen2 中记录 photoURL 时,它是一个不同的值。
主屏幕中的photoURL:https://firebasestorage.googleapis.com/app-name/o/Users%2F1702579717947?alt=media&token=02d60b8b-09e7-4d1c-aa3f-902de123396b
photoURL 作为参数接收:https://firebasestorage.googleapis.com/app-name/o/Users/1702579717947?alt=media&token=02d60b8b-09e7-4d1c-aa3f-902de123396b
区别在于用户/。正确的是“%2F”而不是“/”
有人可以帮我理解为什么 photoURL 值在屏幕之间变化以及如何解决这个问题吗?
任何见解或建议将不胜感激。谢谢!
遇到同样的问题,你找到解决办法了吗?