成功设置Firebase后,如何在React中设置状态?

时间:2019-02-14 14:48:41

标签: reactjs firebase firebase-realtime-database

我具有以下功能,可将我的应用程序状态保存到Firebase参考:

saveResultsToDatabase() {

    const {
      companyName, companyUrl, productName, goals, industries,
      ageRanges, gender, other, weightedScores, goalScores, industryScores, ageScores, recommendation,
      email, phone, optin
    } = this.state

    const databaseObject = {
      companyName, companyUrl, productName, goals, industries,
      ageRanges, gender, other, weightedScores, goalScores, industryScores, ageScores, recommendation,
      email, phone, optin
    }


    contactRef.push().set((databaseObject), function(error) {
      if (error) {

        console.log(error)
      } else {
        this.setState({savedToDatabase: true})
      }
    })

我想在Firebase成功执行后以我的状态更新“ savedToDatabase”对象。但是,这不起作用。我收到以下错误:

TypeError: Cannot read property 'setState' of undefined

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

用于Firebase操作function() {}的回调的this内部与该组件的this不同。一种选择是改为使用箭头函数绑定到此上下文。

您可以在此处了解更多信息:https://hackernoon.com/javascript-es6-arrow-functions-and-lexical-this-f2a3e2a5e8c4

例如

contactRef.push().set((databaseObject),(error) => {
  // do something
  this.setState({})
}

这应该有效。

您之前可能见过的另一种选择是使用var self = this方法

var self = this;
contactRef.push().set((databaseObject), function(error) {
  // do something
  self.setState({})
}