Я новичок в 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
Нужна помощь :(



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема возникает из-за:
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
})
}
})
}
@Kim можешь ссылку на документацию? Мы должны попытаться обновить его
Нет .. это документация firebase для проектов javascript. Это я был виноват :(
Я просто скопировал вставку из документов Firebase. Я буду иметь это в виду. Тысм