如何在api函数中设置状态

问题描述

我在类方法中包含以下代码

ref
      .orderByValue()
      .equalTo(email)
      .once("value",snapshot => {
        if (snapshot.exists()) {
          console.log(this);
          this.setState({ signedUp: true });
        } else {
          ref.update({ [newKey]: email });
        }
      });

除非用户已经注册,否则它将在提交时更新我的​​Firebase数据库一个typeError说this.setState is not a function。但是,当我使用控制台日志this时,控制台会打印出该类。记录this.state也会打印出状态。

我该如何解决?我想从此函数内部更新状态。

解决方法

最好的解决方案是使用功能组件。

但是,如果您想使用类组件,则可能是一个绑定问题。

因此,如果是在名为func的函数中触发的,则应将此函数绑定到构造函数中。

...
constructor(props) {
...
this.func = this.func.bind(this);
...
}
func() {
...
ref
      .orderByValue()
      .equalTo(email)
      .once("value",snapshot => {
        if (snapshot.exists()) {
          console.log(this);
          this.setState({ signedUp: true });
        } else {
          ref.update({ [newKey]: email });
        }
      });
...
}

如果不想绑定此功能,则应使用箭头功能。

func = () => {
...
}