Я ломал голову над этой проблемой последние 2-3 дня. Я пытаюсь показать набор displayName нового пользователя, сохраненный в базе данных аутентификации Firebase при загрузке страницы его учетной записи. Кажется, я не могу показать это при первой загрузке. Я попробовал установить метод setState в самом компоненте UserAccount, но это вызывает ту же проблему. Страница должна быть обновлена вручную для изменения состояния имени пользователя и элемента p для отображения displayName на экране. Пожалуйста, помогите мне понять это. Вот код компонента UserAccount. Если вам нужны другие коды из других компонентов, пожалуйста, дайте мне знать.
class UserAccount extends React.Component {
constructor(props) {
super(props)
this.state = {
username: this.props.user.displayName
}
this.signout = this.signout.bind(this);
}
signout() {
firebase.auth().signOut()
}
The following commented code is my first try to get the displayName to show but it had the same issue so I tried to pass the props from the App.js component to see if it would work but it again has the same issue:
// componentDidMount () {
// firebase.auth().onAuthStateChanged((user) => {
// if (user) {
// var displayName = user.displayName;
// console.log(displayName);
// this.setState((state) => {
// return {username: displayName} })
// } else {
// console.log('Please sig in')
// }
// })
// }
render () {
return (
<div>
<h1> You are in </h1>
<button onClick={this.signout}>Sign Out</button>
<p>Hey {this.state.username}</p>
</div>
)
}
}