фотосъемка с помощью react native camera и передача фотографии на другой экран

#javascript #reactjs #react-native #react-native-camera

#javascript #reactjs #react-native #react-native-camera

Вопрос:

Я работаю над простым приложением для создания портфолио react native, которое использует react native camera. Функция takePicture определяется следующим образом:

 takePicture = async () => {
    if (this.camera) {
      let photo = await this.camera.takePictureAsync();

    }
  }
 

И он вызывается при нажатии кнопки:

 onPress = { () => {
                    this.takePicture();
                    //console.log("loggin");
                    this.props.navigation.navigate('PictureScreen');
                  }
                  }
 

Моя проблема в том, что я хочу передать фотографию на экран с картинками. Фотография объявлена с помощью let scope, поэтому я не могу получить к ней доступ и использовать ее в своем навигационном вызове.

Как мне получить доступ к фотографии и передать ее на следующий экран? Должен ли я использовать какой-то механизм состояния?

Спасибо!

Ответ №1:

Вы можете просто вернуть Promise из takePictureAsync :

 export class SomeComponent extends React.Component {

    camera = null;

    takePicture = () => {
        if (!this.camera) {
            throw new Error("Camera not initialized");
        }

        return this.camera.takePictureAsync();
    }

    onPress = async () => {
        try {
            const photo = await this.takePicture();
            this.props.navigation.navigate('PictureScreen', { photo });
        } catch (error) {
            console.error(`An error occured while taking the picture - ${error}`);
        }
    }

    // ...
}