Как использовать setState () внутри compoentWillMount ReactJS

Я новичок в ReactJs. Я пытаюсь создать с его помощью приложение firebase. Итак, в componentWillMount я проверяю, вошел ли пользователь в систему или нет, и устанавливаю логическое значение состояния в соответствии с этим

  componentWillMount() {
    var config = {...};
    Firebase.initializeApp(config)

    Firebase.auth().onAuthStateChanged(function(user){
      if (user){
        console.info("User logined");
        this.setState({
          isLogined : true
        })
      }else{
        console.info("User isn't logined");
        this.setState({
          isLogined : false
        })
      }
    })

  }

Но это показывает, что setState () не является функцией.

index.js:2178 TypeError: this.setState is not a function
    at Object.next (App.js:31)
    at index.cjs.js:1353
    at index.cjs.js:1457

Нужна помощь :(

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
142
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема возникает из-за:

Firebase.auth().onAuthStateChanged(function(user){

this не относится к реакционному компоненту. Вместо этого попробуйте:

Firebase.auth().onAuthStateChanged((user) => {
Ответ принят как подходящий

Немногое:

1) Вы захотите переместить этот код на componentDidMount. componentWillMount - это устарел. Вот еще немного информации о том, почему вы должны предпочесть componentDidMount

2) Измените обратный вызов onAuthStateChanged на стрелочная функция.

componentDidMount() {
var config = {...};
Firebase.initializeApp(config)

Firebase.auth().onAuthStateChanged((user) => {
  if (user){
    console.info("User logined");
    this.setState({
      isLogined : true
    })
  }else{
    console.info("User isn't logined");
    this.setState({
      isLogined : false
    })
  }
})

}

Я просто скопировал вставку из документов Firebase. Я буду иметь это в виду. Тысм

Bucky 18.05.2018 19:18

@Kim можешь ссылку на документацию? Мы должны попытаться обновить его

AnilRedshift 18.05.2018 19:21

Нет .. это документация firebase для проектов javascript. Это я был виноват :(

Bucky 18.05.2018 19:47

Другие вопросы по теме