У меня есть следующий код, в котором я хочу получить токен доступа из URL, поместить его в хранилище сеанса и позволить моему дочернему компоненту использовать токен доступа для получения моей информации. Однако, когда компонент загружается в первый раз, он, похоже, не находит токен доступа, а работает, если я обновляю его снова. В попытке решить эту проблему я подумал об использовании async / await, чтобы он не продолжал перенаправлять на дочерний компонент до тех пор, пока не будет установлен токен сеанса, но, похоже, он не ожидает установки токена. Не уверен, что я делаю не так?
class App extends React.Component {
constructor(props){
super(props);
this.processToken();
}
componentDidMount() {
const { user } = this.props;
const { accessToken } = user;
// expecting access token to print here by it is not
console.log('user token : ', accessToken);
}
processToken = async () => {
try {
const params = querySearch(this.props.location.search);
if('accessToken' in params){
await new Promise((resolve,reject) => {
this.setOrderContext(params);
resolve();
} );
this.props.history.push(`/myinfo`);
}
} catch(ex) {
console.log(ex);
}
}
setOrderContext (params){
//this action calls a reducer and put the token in session storage
this.props.userActions.processUserToken({data: {accessToken:params.accessToken}});
}
render() {
return (
<Switch>
//myinfo component needs accessToken to retrieve my info
<Route path="/myInfo" component={InofUI.App} />
</Switch>
);
}