2

所以,我有一个商店,其中包含 React 应用程序中的 Auth 信息。身份验证来自 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()变化的结果不是因为用户交互,而只是时间的流逝。

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

4

1 回答 1

3

您可以简单地执行以下操作吗?

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)

于 2016-10-14T05:59:10.320 回答