所以,我在React应用程序中有一个包含Auth信息的商店。 auth派生自JWT令牌。商店有一个名为@observable
的{{1}}值,用于检查auth商店是否有令牌,如果该令牌尚未过期,则类似于以下内容:
loggedIn
MobX依赖于知道何时在应用程序周围传播状态更改的操作,但class AuthStore {
@observable token = cookies('api_token');
@computed get loggedIn() {
if (!this.token) {
return false;
}
return jwt_expires_in(this.token) > 60;
}
}
的结果不是因为用户交互而是因为时间的推移而改变。
所以,我想知道的是我如何在没有任何用户交互的情况下将此值传递给propogate,如何在给定的时间间隔内“轻推”它,以便应用程序可以正确响应过期的身份验证。
答案 0 :(得分: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)