我是一个新的react-native-image-picker包,有几个星期的时间尝试让它工作,但它每次都给我错误。我已经导入了包,就像github页面中所描述的那样,但我似乎不知道我做错了什么。下面是我的代码:
import { StatusBar } from "expo-status-bar";
import React from "react";
import { StyleSheet, Text, View, Button } from "react-native";
import { launchImageLibrary } from "react-native-image-picker";
export default function App() {
const onPress = () => {
const options = {};
launchImageLibrary(options, (item) => {
console.log(item);
});
};
return (
<View style={styles.container}>
<Button title={"pick img"} onPress={onPress} />
<StatusBar style="auto" />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});这是我得到的错误:
TypeError: Cannot read property 'launchImageLibrary' of undefined
launchImageLibrary
C:/Users/Denoh/SilkyMarket/node_modules/react-native-image-picker/src/index.ts:37
34 | console.error("Send proper callback function, check API");
35 | return;
36 | }
> 37 | NativeModules.ImagePickerManager.launchImageLibrary(
| ^ 38 | {...DEFAULT_OPTIONS, ...options},
39 | callback,
40 | );
View compiled
onPress
C:/Users/Denoh/SilkyMarket/App.js:9
6 | export default function App() {
7 | const onPress = () => {
8 | const options = {};
> 9 | launchImageLibrary(options, (item) => {
10 | console.log(item);
11 | });
12 | };
View compiled请帮帮我!!
发布于 2021-03-04 17:32:07
这是一个工作示例,展示了如何从图库中获取图像并显示它们。
工作示例:

import React, { useState, useEffect } from 'react';
import { StyleSheet, View, Button, Image, FlatList, Text } from 'react-native';
import { Ionicons } from '@expo/vector-icons';
import * as ImagePicker from 'expo-image-picker';
export default function Add() {
const [galleryPermission, setGalleryPermission] = useState(null);
const [imageUri, setImageUri] = useState(null);
const permisionFunction = async () => {
// here is how you can get the camera permission
const imagePermission = await ImagePicker.getMediaLibraryPermissionsAsync();
console.log(imagePermission.status);
setGalleryPermission(imagePermission.status === 'granted');
if (imagePermission.status !== 'granted') {
alert('Permission for media access needed.');
}
};
useEffect(() => {
permisionFunction();
}, []);
const pick = async () => {
let result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 1,
});
if (!result.cancelled) {
setImageUri(result.uri);
}
};
return (
<View style={styles.container}>
{imageUri ? (
<Image
source={{ uri: imageUri }}
style={{ flex: 1, borderRadius: 10, margin: 5 }}
/>
) : (
<View style={styles.textBox}>
<Text>No Image Selected</Text>
</View>
)}
<Button title={'Pick From Gallery'} onPress={pick} />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
textBox: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});发布于 2021-03-04 18:03:56
状态:-
const [state, setState] = useState({
imagePickerVisible: false,
imagePath: null,
});处理图像的函数:
const chooseFile = () => {
let options = {
maxWidth: 500,
maxHeight: 500,
mediaType: "photo"
// title: 'Select Image',
// customButtons: [
// {
// name: 'customOptionKey',
// title: 'Choose Photo from Custom Option'
// },
// ],
// storageOptions: {
// skipBackup: true,
// path: 'images',
// },
};
launchImageLibrary(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
);
Alert.alert(response.customButton);
} else {
let source = response;
console.log("source==>", source)
// You can also display the image using data:
// let source = {
// uri: 'data:image/jpeg;base64,' + response.data
// };
setState({
...state,
imagePath: source,
imagePickerVisible: true
})
}
});
};组件:-
<TouchableOpacity
activeOpacity={1}
onPress={() => { chooseFile() }}
>
<Image
source={state.imagePickerVisible ? { uri: state.imagePath.uri }
: constants.Images.Camera
}
style={styles.image}
resizeMode={"cover"}
/>
</TouchableOpacity>https://stackoverflow.com/questions/66471288
复制相似问题