React Native图片选择器uri弃用警告(SDK48)解决方法咨询
解决ImagePicker的uri弃用警告问题
这个警告是因为Expo ImagePicker从SDK 48开始调整了返回结果的结构:原来直接挂载在result上的uri字段被废弃,选中的资源统一放在assets数组中。你只需要调整获取uri的方式就能解决这个问题。
修改要点:
- 图片选择未取消时,不再直接取
result.uri,而是从result.assets数组中获取第一个元素(你的代码是单选场景),再从中提取uri - 顺便修正代码里的拼写错误:
delte改成delete
修改后的完整代码:
const selectImage = async () =>{ try { const result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.Images, allowsEditing: true, aspect: [4, 3], quality: 0.5 }); if(!result.canceled){ // 从assets数组中获取第一个选中资源的uri const selectedAsset = result.assets[0]; setImage(selectedAsset.uri); saveToFile(); } else { Alert.alert('Delete', 'Are you sure you want to delete the image', [ {text:"Yes", onPress:()=> setImage(null)},{text:"No"} ]); } } catch (error) { console.log("error reading an image"); } }
如果是多选场景,你可以遍历result.assets数组来处理每一张选中的图片。
内容的提问来源于stack exchange,提问作者Ephrat Negussie
相关产品推荐
相关产品推荐

