React Native Image Picker:null不是对象(评估'ImagePickerManager.showImagePicker')

时间:2019-08-05 12:56:12

标签: android react-native react-native-image-picker

我根据文档安装了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>
    );
  }
}

5 个答案:

答案 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

  
      
  1. npm uninstall react-native-image-picker

  2.   
  3. npm install react-native-image-picker@1.1.0 --save

  4.   
  5. react-native link react-native-image-picker

  6.   
  7. cd ios

  8.   
  9. pod install

  10.   
  11. cd ..

  12.   

停止打包程序或捆绑程序,然后重新运行

  

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(
      ....
 )

仅需导入将要使用的方法,而不是整个模块。对我有用。