Невозможно прочитать свойство 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;
      }
    }
  };
Другие вопросы по тегам