Firebase не обновляется новыми данными - PullRequest
0 голосов
/ 26 мая 2020

поэтому в приведенном ниже коде пользователю предлагается ввести текст в 2 TextInputs, который обновит данные в состоянии, и когда пользователь нажимает кнопку «Сохранить изменения профиля» или TouchableOpacity, который отправляет данные в состоянии в база данных Firebase.

Это, похоже, не обновляет базу данных. Может ли кто-нибудь пролить свет на то, в чем может быть проблема?

import React, { Component } from 'react';
import {
  StyleSheet,
  Text,
  TextInput,
  View,
  Image,
  TouchableOpacity
} from 'react-native';
import Fire from '../Fire';
import * as Analytics from 'expo-firebase-analytics';

export default class UpdateProfileScreen extends Component {

  constructor(props) {
    super(props);
    this.state = {
            name: 'no name',
          about: '',
        zoom: '',
        net: '',
        profile: ''
    };
  }

  onPressUpdate = async () => {
      const user = {
        name: this.state.name,
        profile: this.state.about,
        zoom: this.state.zoom
      };
      await Fire.shared.updateProfile(user);
    };

  onChangeTextName = name => this.setState({ name });
  onChangeProfile = profile => this.setState({ profile });

  render() {
    return (
      <View style={styles.container}>
          <View style={styles.header}></View>

          <Image style={styles.avatar} source={{uri: 'https://bootdey.com/img/Content/avatar/avatar3.png'}}/>
          <View style={styles.body}>
          <TextInput
            style={styles.nameInput}
            onChangeText={this.onChangeTextName}
            value={this.state.name}
          />
          <TextInput
            style={styles.description}
            onChangeText={this.onChangeProfile}
            value={this.state.profile}
          />
            <View style={styles.bodyContent}>
              <TouchableOpacity style={styles.buttonContainer} onPress={() => {
                Analytics.logEvent('UserZoomButton', {
                  screen: 'UpdateProfile',
                  purpose: 'User clicks on "Zoom" button',
                });
              }}>
                <Text>Zoom</Text>
              </TouchableOpacity>
              <TouchableOpacity style={styles.buttonContainer} onPress={() => {
                Analytics.logEvent('SaveProfileChangesButton', {
                  screen: 'UpdateProfile',
                  purpose: 'User clicks on "Save Profile Changes" button',
                });
                this.onPressUpdate;
              }}>
              <Text>Save Profile Changes</Text>
              </TouchableOpacity>
            </View>
        </View>
      </View>
    );
  }

  componentDidMount() {
    Fire.shared.getname(net_result =>
      Fire.shared.getname(name_result =>
        Fire.shared.getprofile(profile_result => {
          this.setState({net:net_result, name:name_result, profile:profile_result})
        })));
  }
}
});

1 Ответ

0 голосов
/ 26 мая 2020

Думаю, вы пропустили парантез. Замените this.onPressUpdate; на this.onPressUpdate();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...