Попытайтесь поместить ваш метод onAuthStateChanged
не в конструктор, а в метод жизненного цикла, такой как componentDidMount
, и сделайте его асинхронным / ожидающим.
Я предполагаю, что этот метод выполняет HTTP-вызов, так чтонекоторая сетевая задержка между отображаемым компонентом и запросом.Поэтому я предполагаю, что ваш метод возвращает Обещание.
class App extends Component {
// ES6 make writting a class simpler - don't need
// explicitly write constructor. Just a state Object
state = {
userid: null
}
componentDidMount = async () => { // need an arrow function to bind(this)
try {
const user = await fire.auth().onAuthStateChanged()
if (user) {
this.setState({
userUid: user.uid
})
} catch (e) {
console.log(e)
}
}
// rest of your class
}
ПОБОЧНОЕ ПРИМЕЧАНИЕ: вы смешиваете import XXX from 'XXX'
с var YYY = require('YYY')
.Фронтенд должен использовать первый.И это не обязательно, но используйте const
везде, кроме случаев, когда вам нужно переназначить, где вы собираетесь использовать let
.Забудь var