使用Expo Image Picker调用相册时返回值全为Undefined的问题
解决Expo Image Picker选图后返回结果全为undefined的问题
你的问题是由于Expo Image Picker版本迭代导致的API结构变化:v14及以上版本的返回结果格式和旧版完全不同,你用的是旧版代码逻辑,但安装的是新版库,所以会出现所有属性都为undefined的情况。
解决方案
1. 适配新版API(推荐)
如果你的expo-image-picker版本是v14.x及以上,修改代码如下:
const handleImageSelect = async () => { setImageLoading(true); const result = await ImagePicker.launchImageLibraryAsync({ allowsEditing: true, quality: 1, }); if (!result.canceled) { // 新版中选中的图片数据存放在assets数组内 const selectedImage = result.assets[0]; console.log(selectedImage); // 后续使用图片时取selectedImage.uri即可 } else { alert('你没有选择任何图片'); } setImageLoading(false); };
2. 检查并配置权限
确保在app.json或app.config.js中添加必要的权限配置,否则可能出现权限问题导致返回异常:
{ "expo": { "ios": { "infoPlist": { "NSPhotoLibraryUsageDescription": "需要访问你的相册来选择图片" } }, "android": { "permissions": ["READ_MEDIA_IMAGES"] } } }
3. 降级到旧版本(可选)
如果不想修改代码,可以将expo-image-picker降级到v13.x版本,运行以下命令:
# npm npm install expo-image-picker@13.1.1 # yarn yarn add expo-image-picker@13.1.1
降级后你原来的代码逻辑就能正常工作。
内容的提问来源于stack exchange,提问作者Adam Saleem
相关产品推荐
相关产品推荐

