Я разрабатываю генератор списков воспроизведения с помощью Spotify API
.Я делаю рефакторинг своего кода в React, и меня немного смущает подъем состояния с помощью асинхронных вызовов.
В моем App component
у меня есть функция login
, которая аутентифицирует пользователя, а затем обновляет состояние с помощью информации о пользователе.Я передаю это через nav component
компоненту кнопки, который выполняет функцию, а затем обновляет состояние с помощью пользовательской информации.Мне нужно использовать эту информацию о пользователе для повторной визуализации кнопки входа в качестве имени пользователя и фотографии.
class App extends Component{
//login function
//loginUser(){}
return(
<NavBar loginClicked={this.loginUser} loggedIn={this.state.loggedIn} user={this.state.curUser ? this.state.curUser: undefined}/>
)
}
class NavBar extends Component{
render(){
return (
<nav>
<div className="logo" aria-label="sign in">
<h1><a href="index.html">Moment Music</a></h1>
</div>
<SignIn loginClicked = {this.props.loginClicked} user={this.props.user ? this.props.user: undefined} loggedIn = {this.props.loggedIn} />
</nav>
);
}
}
class SignIn extends Component{
componentWillReceiveProps(nextProps){
console.log(nextProps);
return this.setState({nextProps});
}
render(){
console.log(this.state.user)
return(
<div className='top-right'>
{this.state.loggedIn ?
( //<div className="logged-in" id='logged-in' aria-label="logged in">
<div className="logged-in" id='profile-nav-bar'>
<img className = "profile-img" id='profile-img' src={this.state.user.profileImg}/>
<h2 id='profile-name'>{this.state.user.username}</h2>
</div>)
//</div>)
:
(<div onClick={this.props.loginClicked} className="sign-in" id="sign-in" aria-label="sign in">
<a className="btn btn-primary">Log in with Spotify</a>
</div>)
}
</div>
)
}
}
Я могу обновить состояние с помощью componentWillRecieveProps
, но оно не передаетсяметод рендеринга SignIn
.
Спасибо за вашу помощь заранее.