Я использую CoreUI с React Router DOM, React Router DOM config, Mobx и Mobx реагируют.
Я написал функцию входа в систему в моем хранилище, которая сохраняет токен аутентификации с сервера в хранилище сеансов (используяsessionStorage.setItem ('token', token)) после успешного входа в систему.
Проблема заключается в том, что следующий компонент, к которому я направляюсь после входа в систему, выполняет выборку javascript для componentDidMount и отправляет токен аутентификации носителя в заголовках.
Однако проблема, с которой я сталкиваюсь, заключается в том, что токен аутентификации не определен при получении данных (sessionStorage.getItem ('token')).Он появляется только после того, как я обновил страницу.Это похоже на загрузку компонента и он отображается перед сохранением токена аутентификации.
Интересно, это связано с асинхронными вызовами.
В моем компоненте входа в систему у меня есть эта функция:
logIn = async () => {
const { sessionStore: ss } = this.props.RootStore;
let login = await this.ss.login();
if(login) {
this.props.history.push('/dashboard');
}
}
Затем, в моем следующем компоненте (Dashboard), у меня есть:
componentDidMount() {
const { companyStore : company, sessionStore : ss } = this.props.RootStore;
if(ss.companySetup === false) {
company.getDefaultCompany('set');
}
}
В функции getDefaultCompanyЯ проверяю, установлен ли sessionStorage.getItem ('token'), и если да, добавьте его в заголовок.Но это возвращается неопределенным.Если я обновляю страницу, токен устанавливается и отправляется с вызовом fetch.
Я в тупике.