有没有办法在 MobX 中推动可观察值?

Is there a way to nudge an observable value in MobX?

所以,我在 React 应用程序中有一个包含 Auth 信息的商店。身份验证源自 JWT 令牌。该商店有一个名为 loggedIn@observable 值,用于检查授权商店是否有令牌以及该令牌是否尚未过期,类似于以下内容:

class AuthStore {
  @observable token = cookies('api_token');
  @computed get loggedIn() {
    if (!this.token) {
      return false;
    }
    return jwt_expires_in(this.token) > 60;
  }
}

MobX 依赖于动作来知道何时在应用程序周围传播状态变化,但 loggedIn() 的结果变化不是因为用户交互,而仅仅是时间的流逝。

所以,我想知道的是如何在没有任何用户交互的情况下传播这个值,如何在给定的时间间隔内 "nudge" 它以便应用程序可以正确响应即将到期的身份验证。

你能简单地做到以下几点吗?

class AuthStore { constructor() { setTimeout(() => this.token = null, calc-time-to-expire + 60*1000) } }

否则,将过期时间存储在一个单独的值中,并每隔一定时间更新一次。 例如@observable expires_in = 0setInterval(() => this.expiresIn = token ? 0 : jwt_expires(token), 1000)