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

问题描述 投票:0回答:1

我有以下功能将我的应用状态保存到Firebase ref:

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

我在这里错过了什么?

reactjs firebase firebase-realtime-database
1个回答
1
投票

function() {}内部的firebase行动回调this与组件的this不同。一种选择是使用箭头函数,而不是绑定到此的上下文。

你可以在这里阅读更多相关信息:https://hackernoon.com/javascript-es6-arrow-functions-and-lexical-this-f2a3e2a5e8c4

EG

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({})
}
© www.soinside.com 2019 - 2024. All rights reserved.