Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尽管绑定,异步函数未定义_Javascript_Firebase_React Native_Async Await_Asyncstorage - Fatal编程技术网

Javascript 尽管绑定,异步函数未定义

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 =

我正在努力弄清楚为什么下面的React本机代码中的函数storeEmailVerified()返回未定义。以下是错误消息:

that.storeEmailVerified不是一个函数。(在 “that.storeEmailVerified(“true”),“that.storeEmailVerified”是 (未定义)

我已将以下两个函数绑定到构造函数中的“this”

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会破坏上下文。谢谢!