Firestore仅在数据不为空时更新数据

时间:2018-07-05 09:25:13

标签: react-native google-cloud-firestore

我正在使用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;

但是当我改变生日时,它仍然使用道具。

欢呼

0 个答案:

没有答案