Javascript 尽管绑定,异步函数未定义
我正在努力弄清楚为什么下面的React本机代码中的函数storeEmailVerified()返回未定义。以下是错误消息: that.storeEmailVerified不是一个函数。(在 “that.storeEmailVerified(“true”),“that.storeEmailVerified”是 (未定义) 我已将以下两个函数绑定到构造函数中的“this”Javascript 尽管绑定,异步函数未定义,javascript,firebase,react-native,async-await,asyncstorage,Javascript,Firebase,React Native,Async Await,Asyncstorage,我正在努力弄清楚为什么下面的React本机代码中的函数storeEmailVerified()返回未定义。以下是错误消息: that.storeEmailVerified不是一个函数。(在 “that.storeEmailVerified(“true”),“that.storeEmailVerified”是 (未定义) 我已将以下两个函数绑定到构造函数中的“this” constructor(props) { super(props); this.storeEmailVerified =
constructor(props) {
super(props);
this.storeEmailVerified = this.storeEmailVerified.bind(this);
this.checkEmailVerified = this.checkEmailVerified.bind(this);
}
checkEmailVerified = async () => {
let currentUser = firebase.auth().currentUser.uid;
firebase.database().ref().child("/users").child(currentUser).on("value", function (snapshot) {
if (snapshot.exists()) {
const emailVerified = snapshot.child("emailVerified").val();
if (emailVerified == true) {
this.setState({
emailVerified: true
})
this.storeEmailVerified("true");
// AsyncStorage.setItem("emailVerified", true)
}
else {
this.setState({
emailVerified: false
})
this.storeEmailVerified("false");
// AsyncStorage.setItem("emailVerified", false)
}
}
});
};
storeEmailVerified = async status => {
try {
await AsyncStorage.setItem("emailVerified", status)
} catch (error) {
alert(error)
return 'error'
}
}
这是因为use没有
返回任何内容it@DominikMatis谢谢你的回复。我更新了代码并添加了一个返回,但错误消息是相同的。还有其他想法吗?that=this
位是一个hack,在这种情况下不起作用,因为当你称它为时,this
已经指向了错误的东西。如果您想保留词法这个@luciusdeger-close,更像。on(“value”,(snapshot)=>{
@MarkMeyer非常感谢。这让我陷入了太久的困境。我没想到firebase会破坏上下文。谢谢!