我正在使用react native和Google Firestore,保存(更新)字段中的数据。
屏幕加载时,它会从Firestore获取数据以显示它(这是可行的):
componentDidMount() {
let userID = firebase.auth().currentUser.uid;
this.userRef.doc(userID)
.get()
.then((doc) => {
if (doc) {
const { firstName, lastName, email, gender, birthday } = doc.data();
this.setState({
firstName: firstName,
lastName: lastName,
email: email,
gender: gender,
birthday: birthday
});
}
})
}
这是输入之一:
<Input
style={{color: "#000"}}
underlineColorAndroid='transparent'
placeholderTextColor="grey"
autoCapitalize='words'
value={this.props.firstName ? this.props.firstName : this.state.firstName}
onChangeText={this.onFirstNameChange.bind(this)}
/>
onChangeText正在使用此功能:
onFirstNameChange(text) {
this.props.firstNameChanged(text);
}
props.firstNameChanged在另一个文件中,该文件返回值。
然后保存它的按钮具有以下功能:
onButtonPress() {
const { firstName, lastName, gender, birthday, email, password, navigation } = this.props ? this.props : this.state;
this.props.updateUser({ firstName, lastName, birthday, gender, email, password, navigation });
}
我遇到的问题是,当我将firstName保留为原样时(已经包含名字)。单击on按钮将其保存为空,因为onChangeText尚未触发。
那么,如果未更改,那么如何确保它使用当前值呢? 我已经尝试过:
const { firstName, lastName, gender, birthday, email, password, navigation } = this.props ? this.props : this.state;
但是当我改变生日时,它仍然使用道具。
欢呼