问题描述
使用 React Image Picker 我遇到了这个错误: TypeError: undefined is not an object (evaluating '_reactNativeImagePicker.default.showImagePicker')
手机截图:
这是我的代码:
import React from 'react';
import { View,Text,Button } from 'react-native';
import ImagePicker from 'react-native-image-picker';
const options = {
title: 'Select Avatar',customButtons: [{ name: 'fb',title: 'Choose Photo from Facebook' }],storageOptions: {
skipBackup: true,path: 'images',},};
function Picker(){
const openPicker =()=>{
ImagePicker.showImagePicker(options,(response) => {
console.log('Response = ',response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ',response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ',response.customButton);
} else {
const source = { uri: response.uri };
// You can also display the image using data:
// const source = { uri: 'data:image/jpeg;base64,' + response.data };
console.log(source)
}
});
}
return(
<View>
<Button onPress={openPicker} title="Open image picker"></Button>
</View>
)
}
export default Picker;
解决方法
我遇到了同样的问题,这就是我解决它的方法。
import * as ImagePicker from "react-native-image-picker"
如果你的 react-native-image-picker 版本是 3.x.x 那么,用这些行替换上面的代码,
import {launchCamera,launchImageLibrary} from 'react-native-image-picker'; // Migration from 2.x.x to 3.x.x => showImagePicker API is removed.
...
const openPicker =()=>{
launchCamera(options,(response) => { // Use launchImageLibrary to open image gallery
console.log('Response = ',response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ',response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ',response.customButton);
} else {
const source = { uri: response.uri };
// You can also display the image using data:
// const source = { uri: 'data:image/jpeg;base64,' + response.data };
console.log(source)
}
});
阅读docs
,如果是 3x,请检查您的 lib 版本,然后尝试这样的操作
import * as ImagePicker from "react-native-image-picker"
<Button onPress={() =>
ImagePicker.launchImageLibrary(
{
mediaType: 'photo',includeBase64: false,maxHeight: 200,maxWidth: 200,},(response) => {
console.log(response);
this.setState({resourcePath: response});
},)
}
title="Select Image"/>
,
问题:import ImagePicker from "react-native-image-picker"
解决方案: import * as ImagePicker from "react-native-image-picker"