#react-native #expo
#react-native #expo
Вопрос:
Я пытаюсь разрешить пользователю выбирать изображение из галереи, а затем передавать изображение на следующий экран в качестве параметра, где они могут завершить свой пост (аналогично потоку создания Instagram).
Используя expo image picker, можно нажать кнопку, которая открывает галерею и позволяет пользователю выбрать изображение, а галерея закрывается. Это делается с помощью этого кода:
async openImagePickerAsync() {
let permissionResult = await ImagePicker.requestCameraRollPermissionsAsync();
if (permissionResult.granted === false) {
alert("Permission to access camera roll is required!");
return;
}
let pickerResult = await ImagePicker.launchImageLibraryAsync()
console.log(pickerResult.uri)
if (pickerResult.cancelled === true) {
return;
}
this.setPicked(pickerResult);
};
Консоль регистрирует uri, все отлично. Изображение выбрано. Проблема начинается с вызова функции this.setPicked, где я просто подтверждаю, что изображение было выбрано, и устанавливаю состояние:
setPicked = (pickerResult) => {
console.log("called setPicked")
if (pickerResult !== null) {
console.log("pickerResult not null")
this.setState({
image: pickerResult.uri
}).bind(this)
console.log(pickerResult.uri)
console.log(this.state.image)
}
else {
console.log("pickerResult is null")
return;
}
}
Ни один из операторов печати не печатается, и я получаю это предупреждение в консоли:
[Unhandled promise rejection: TypeError: undefined is not an object (evaluating 'this.setPicked')]
Есть идеи, что происходит? Спасибо
Ответ №1:
Похоже, что функция openImagePickerAsync не имеет доступа к «этому»
измените его на функцию со стрелкой, как показано ниже, и она должна работать.
openImagePickerAsync = async ()=> {
Комментарии:
1. Ну, вам нужно привязать это или использовать функцию со стрелкой, чтобы получить доступ к контексту, обратитесь к этому freecodecamp.org/news /…