Есть ли способ изменить наблюдаемое значение в MobX?

#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)