如何解决使用文本输入更新功能组件中的 Firebase 文档
这是我的屏幕,用户可以访问它来编辑/更新他们的详细信息。我的问题是,当按下保存按钮时,我似乎无法从 Inputs 中获取要用作新数据的值。它抱怨是一个函数。如何将我的状态转换为用于更新 firebase 文档的函数的字符串?
const UserProfileEditScreen = ({ navigation }) => {
const user = auth.currentUser;
const [userData,setUserData] = useState({});
const getUser = async() => {
const currentUser = await firestore
.ref('users')
.doc(user.uid)
.get()
.then((documentSnapshot) => {
if( documentSnapshot.exists ) {
setUserData(documentSnapshot.data());
}
})
}
const [displayName,setNewdisplayName] = useState('');
const [name,setName] = useState('');
const [surname,setSurname] = useState('');
const [birthdate,setBirthdate] = useState('');
const handleUpdate = () => {
firestore.collection('users').doc(user.uid).set({
displayName: setNewdisplayName,name: setName,surname: setSurname,}).then(() => {
console.log('User Updated!');
Alert.alert(
'Profile Updated!','Your profile has been updated successfully.'
);
});
navigation.navigate('Profile');
}
useEffect(() => {
getUser();
},[])
return (
<dismissKeyboard>
<View style={styles.container}>
<View style={styles.insideContainer}>
<Text style={[styles.headTextH2,styles.whiteText]}>Edit Account</Text>
<View style={{marginBottom:45}}></View>
<Text style={[styles.headTextH3,styles.whiteText]}>display Name</Text>
<TextInput
style={styles.inputStyles}
placeholder={userData.displayName}
placeholderTextColor="#000"
value={displayName}
onChangeText={setNewdisplayName}
/>
<Text style={[styles.headTextH3,styles.whiteText]}>Name</Text>
<TextInput
style={styles.inputStyles}
placeholder={userData.name}
placeholderTextColor="#000"
value={name}
onChangeText={setName}
/>
<Text style={[styles.headTextH3,styles.whiteText]}>Surname</Text>
<TextInput
style={styles.inputStyles}
placeholder={userData.surname}
placeholderTextColor="#000"
value={surname}
onChangeText={setSurname}
/>
<OGButton title="Save Changes" onPress={()=> handleUpdate()} />
</View>
</View>
</dismissKeyboard>
)
}
错误信息:
解决方法
setName,setSurname
是用于分别设置 name
和 surname
的值的函数,您在 Firestore 的 set 方法中传递它们。
const [displayName,setNewDisplayName] = useState('');
const [name,setName] = useState('');
const [surname,setSurname] = useState('');
const [birthdate,setBirthdate] = useState('');
相反,您应该像这样传递值:
firestore.collection('users').doc(user.uid).set({
displayName,name,surname
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。