这是我需要解决的功能。每次,我在function(error)内调用this.setState({})时,都会出现错误,说对象无效。
saveDatabase(userID)
{
firebase.database().ref('users/' + userID).set({
email: this.state.email,
password: this.state.password
}, function(error) {
if (error) {
console.warn(error);
// this.setState({
// error : error,
// isLoading: false
// })
}
else {
Actions.main_home()
}
});
}
答案 0 :(得分:0)
这基本上是因为您尝试呈现值this.state.error
。由于Firebase将Promise作为错误返回,因此render函数不知道如何呈现它。因此应该出现此错误。
要解决此问题,您可以使用this.state.error.toString()
来呈现它。
修改
如果您认为这是注释中提到的绑定问题,则可以使用箭头功能来绑定saveDatabase
功能。
saveDatabase = (userID) =>{
firebase.database().ref('users/' + userID).set({
email: this.state.email,
password: this.state.password
}, function(error) {
if (error) {
console.warn(error);
this.setState({
error : error,
isLoading: false
})
}
else {
Actions.main_home()
}
});
}
但是,如果在调用函数时已经绑定了该函数,则没有必要。