Кнопка не отвечает на проблему с асинхронным React Native - PullRequest
0 голосов
/ 27 февраля 2019

Я скопировал следующий код из проекта github и попытался использовать expo.Проект выполнен без ошибок, но когда я нажимаю кнопку, ничего не происходит.даже не ошибка, это мой код NB - я вставил предупреждение в onChooseImagePress и предупреждение работает нормально

import React from 'react';
import { Image, StyleSheet, Button, Text, View, Alert, } from 'react-native';
import { ImagePicker } from 'expo';
import * as firebase from 'firebase';
import {firebaseConfig} from "./ApiKeys";

export default class HomeScreen extends React.Component {
    static navigationOptions = {
        header: null,
    };

    onChooseImagePress = async () => {
        let result = await ImagePicker.launchCameraAsync();
        //let result = await ImagePicker.launchImageLibraryAsync();

        if (!result.cancelled) {
            this.uploadImage(result.uri, "test-image")
            .then(() => {
                Alert.alert("Success");
            })
            .catch((error) => {
                Alert.alert(error);
            });
        }
    }

    uploadImage = async (uri, imageName) => {
        const response = await fetch(uri);
        const blob = await response.blob();

        var ref = firebase.storage().ref().child("images/" + imageName);
        return ref.put(blob);
    }

    render() {
        return (
            <View style={styles.container}>
            <Button title="Choose image..." onPress={this.onChooseImagePress} />
            </View>
            );
        }
    }

    const styles = StyleSheet.create({
        container: { flex: 1, paddingTop: 50, alignItems: "center", },
    });
}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Попробуйте использовать код ниже

constructor() {
    super();
    this.state = { }; 
    this.onChooseImagePress= this.onChooseImagePress.bind(this);

  } 

<Button title="Choose image..." onPress={() => this.onChooseImagePress()} /> 
0 голосов
/ 27 февраля 2019

Множество синтаксических проблем в вашем коде:

  1. константные стили ... должны быть определены внутри функции рендеринга, в настоящее время она свисает за пределы класса
  2. Скобкинесоответствие
        return (
            <View style={styles.container}>
            <Button title="Choose image..." onPress={this.onChooseImagePress} />
            </View>
            );
        }
    } // the class ends here


Please let me know if it still doesn't work
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...