问题描述
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 = () => {
...
}