Как установить состояние в React после успешной установки Firebase? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть следующая функция для сохранения состояния моего приложения в ссылку на 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.Однако это не работает.Я получаю следующую ошибку:

TypeError: Cannot read property 'setState' of undefined

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 14 февраля 2019

Внутри function() {} обратного вызова for for firebase action 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({})
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...