#reactjs #mobx #mobx-react
#reactjs #mobx #mobx-реагировать
Вопрос:
Итак, у меня есть хранилище, содержащее информацию аутентификации в приложении React. Аутентификация происходит от токена JWT. Хранилище имеет @observable
значение, loggedIn
которое проверяет, есть ли в хранилище аутентификации токен, и если срок действия этого токена еще не истек, примерно так:
class AuthStore {
@observable token = cookies('api_token');
@computed get loggedIn() {
if (!this.token) {
return false;
}
return jwt_expires_in(this.token) > 60;
}
}
MobX зависит от действий, чтобы знать, когда распространять изменение состояния вокруг приложения, но результат loggedIn()
изменений не из-за взаимодействия с пользователем, а просто с течением времени.
Итак, мне интересно, как я могу распространить это значение без какого-либо взаимодействия с пользователем, как «подтолкнуть» его к заданному интервалу, чтобы приложение могло правильно реагировать на истекающую аутентификацию.
Ответ №1:
Не могли бы вы просто сделать следующее?
class AuthStore {
constructor() {
setTimeout(() => this.token = null, calc-time-to-expire 60*1000)
}
}
В противном случае сохраните время истечения в отдельном значении и обновляйте его через определенные промежутки времени. например @observable expires_in = 0
, и setInterval(() => this.expiresIn = token ? 0 : jwt_expires(token), 1000)