我根据文档安装了react-native-image-picker。
当我尝试从手机中选择图像(点击按钮后)时,模拟器给我这个错误-
null is not an object (evaluating 'ImagePickerManager.showImagePicker')
我的React本机版本是0.59.8
并且图像选择器的版本是0.28.0
此代码-
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
Image,
Button
} from 'react-native';
import ImagePicker from "react-native-image-picker";
export default class App extends Component {
state = {
pickedImage: null
}
reset = () => {
this.setState({
pickedImage: null
});
}
pickImageHandler = () => {
ImagePicker.showImagePicker({title: "Pick an Image", maxWidth: 800, maxHeight: 600}, res => {
if (res.didCancel) {
console.log("User cancelled!");
} else if (res.error) {
console.log("Error", res.error);
} else {
this.setState({
pickedImage: { uri: res.uri }
});
}
});
}
resetHandler = () =>{
this.reset();
}
render() {
return (
<View style={styles.container}>
<Text style={styles.textStyle}>Pick Image From Camera and Gallery </Text>
<View style={styles.placeholder}>
<Image source={this.state.pickedImage} style={styles.previewImage} />
</View>
<View style={styles.button}>
<Button title="Pick Image" onPress={this.pickImageHandler} />
<Button title="Reset" onPress={this.resetHandler} />
</View>
</View>
);
}
}
答案 0 :(得分:0)
不是const request = require('request')
getSomething: function() {
var options = {
method: 'GET',
url: '...',
headers: {
Authorization: 'Bearer ...'
},
json: true
};
request(options, (err, res, body) => {
//code
console.log('something1')
}
})
console.log('something2')
},
,您可以使用ImagePickerManager
示例
ImagePicker
答案 1 :(得分:0)
我将图像选择器的版本降级为28.0.0
,然后重新构建应用程序。现在可以了。
答案 2 :(得分:0)
我认为当前版本存在错误。我已经经历过了,我要做的是卸载图像选择器软件包上的当前版本,并安装了版本@1.1.0
:
npm uninstall react-native-image-picker
npm install react-native-image-picker@1.1.0 --save
react-native link react-native-image-picker
cd ios
pod install
cd ..
停止打包程序或捆绑程序,然后重新运行
npm start --rest-cache
答案 3 :(得分:0)
在 android studio 中构建项目,如果您遇到如下错误:
this.options.saveToPhotos && Build.VERSION.SDK_INT <= Build.VERSION_CODES.P && ....
在你的projectName/android/build.gradle中更新这些
ext {
buildToolsVersion = "29.0.2"
minSdkVersion = 21
compileSdkVersion = 29
targetSdkVersion = 29
}
并更新此
afterEvaluate {
project -> if (project.hasProperty("android")) {
android {
compileSdkVersion 29
buildToolsVersion '29.0.2'
}
}
}
答案 4 :(得分:-1)
对于那些在2020年12月仍然面临该问题的人,我只是找到了一个破解方法,即无需导入模型,而只需导入您正在使用的方法即可。
例如
替换此:
import ImagePicker from 'react-native-image-picker';
与此:
import {launchCamera} from 'react-native-image-picker/src/index';
,然后将其替换:
ImagePicker.launchImageLibrary(
....
)
与此:
launchImageLibrary(
....
)
仅需导入将要使用的方法,而不是整个模块。对我有用。