поэтому в приведенном ниже коде пользователю предлагается ввести текст в 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})
})));
}
}
});