Невозможно прочитать свойство undefined (чтение 'выбрать') при попытке использовать средство выбора документов в реагирующем собственном
Я пытаюсь использовать средство выбора документов для своего собственного приложения React. Я пробовал эту команду для установки средства выбора документов: 'npm i response-native-document-picker'. Написав код, я сначала открываю свое приложение в веб-браузере. Но эта ошибка всегда возникает, когда я пытаюсь нажать кнопку для выбора файла. Есть ли у кого-нибудь решения этой проблемы?
Всем большое спасибо. Ниже мой пример кода
import React from 'react';
import {
View,
Button,
} from 'react-native';
import DocumentPicker from 'react-native-document-picker';
export default function App() {
const openDocument = async () => {
try {
const res = await DocumentPicker.pick({
type: [DocumentPicker.types.allFiles],
});
console.log(
res.uri,
res.type, // mime type
res.name,
res.size
);
} catch (err) {
if (DocumentPicker.isCancel(err)) {
// User cancelled the picker, exit any dialogs or menus and move on
} else {
throw err;
}
}
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Button title="Choose file" onPress={() => openDocument()} />
</View>
);
}
2 ответа
Пытаться
console.log(res);
Если это не NULL, вам нужно выбрать один файл, это сохранит JSON в массиве.
try {
const res = await DocumentPicker.pickSingle({
type: [DocumentPicker.types.allFiles],
});
console.log(
res.uri,
res.type, // mime type
res.name,
res.size
);
}
если вы выберете
DocumentPicker.pick
вам нужно сделать цикл for
try {
const res = await DocumentPicker.pickSingle({
type: [DocumentPicker.types.allFiles],
});
for(i in res){
console.log(
i.uri,
i.type, // mime type
i.name,
i.size
);}
}
Вы используете функцию выбора. Таким образом, вы получите результат в массиве. Если вы выбираете функцию выбора, выбирая один файл, вы можете получить значение этим
const openDocument = async () => {
try {
const res = await DocumentPicker.pick({
type: [DocumentPicker.types.images],
});
console.log(
res[0].uri,
res[0].type, // mime type
res[0].size,
res[0].name
} catch (err) {
if (DocumentPicker.isCancel(err)) {
// User cancelled the picker, exit any dialogs or menus and move on
} else {
throw err;
}
}
};
Или вы можете использовать функцию pickSingle
const openDocument = async () => {
try {
const res = await DocumentPicker.pickSingle({
type: [DocumentPicker.types.images],
});
console.log(
res.uri,
res.type, // mime type
res.name,
res.size,
);
} catch (err) {
if (DocumentPicker.isCancel(err)) {
// User cancelled the picker, exit any dialogs or menus and move on
} else {
throw err;
}
}
};