У меня есть API, в котором будет указан весь доступ, который имеет текущий пользователь, поэтому после загрузки app.js я вызываю API в componentWillMount, поэтому в основном у меня есть три маршрута: home, userslist, eachuser. Итак, дом - это статическая текстовая страница.
список пользователей - это компонент, в котором я перечисляю всех пользователей, после того, как вы нажмете на иконку редактирования пользователя, вы перейдете к деталям пользователя в каждом компоненте пользователя.
Проблема в том, что вызовы асинхронны после разрешения useraccessApi и получения только тех данных, которые я должен вызвать usersListApi, путем передачи ответа useraccessApi.
Что я имею в виду под «счастливым потоком», так это то, что первый пользователь загружает localhost: 3000 / home, поэтому useraccessApi будет вызывать, а в редуксе будут данные, поэтому при переключении на вкладку userlist на componentenWillMount это будет работать. Но если пользователь непосредственно выберет localhost: 3000 / userlist, он выдаст ошибку на componentenWillMount, поэтому переместил код в componentWillRecieveProps ().
Так, как я могу решить эту проблему. Или я должен использовать mergeProps для ее решения.
App.js
componenWillMount(){
this.props.userAccessApi()
}
UsersList
componentWillMount(){
const {currentUserAccess} = this.props
// if its a happy flow else it will be currentUserAccess is undefined
if(currentUserAccess){
this.props.usersListApi(currentUserAccess)
}
}
// inorder to resolve it
componentWillRecieveProps(nextProps){
const {currentUserAccess} = nextProps
if(currentUserAccess){
this.props.usersListApi(currentUserAccess)
}
}
const mapStateToProps = (state) => {
return {
currentUserAccess: state.access
}
}