Я делаю кнопку входа в систему с аутентификацией Firebase, которая ссылается на мою базу данных Firebase в реальном времени в обещании.Когда я пытаюсь поднять эти данные, чтобы изменить состояние компонента, они становятся равными нулю.
Я попробовал более простой подход, где я объявляю переменную вне ссылки на firebase, затем пытаюсь установить эту переменную в функции.
Я также попытался установить «this» в качестве пустой переменной массива, а затем получить к нему доступ в виде массива.
Я пытался установить "that" в this.state.ign, но когда я пытаюсь получить доступ к нужным мне данным, он становится нулевым
** edit - я также думал, что это асинхронныйпроблема, поэтому я использовал setTimeout 15000, чтобы пропустить 15 секунд перед попыткой console.log за пределами ссылки на firebase.
var that = this;
firebase.database().ref("users/" + this.state.userid).on("value", function (snapshot) {
var userIGN = (snapshot.val().ign);
console.log(userIGN); // WORKS - gives ign from database
that.setState({ ign: userIGN }); // WORKS - sets that.state.ign to ign from database
console.log(that.state.ign); // WORKS - gives ign from that.state
})
console.log(that); // WORKS - shows object that has state with ign
console.log(that.state); // FAIL - shows state object, but ign is null now?!
Второй console.log (that.state.ign) должен показатьточка данных из firebase ссылки