#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}`);
}
}
// ...
}