在firebase的firebase .set()函数中添加setState

时间:2018-11-02 15:38:48

标签: firebase react-native

这是我需要解决的功能。每次,我在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()
       }
     });
  }

1 个答案:

答案 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()
   }
 });
}

但是,如果在调用函数时已经绑定了该函数,则没有必要。