有没有办法在 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 = 0
和 setInterval(() => this.expiresIn = token ? 0 : jwt_expires(token), 1000)
所以,我在 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 = 0
和 setInterval(() => this.expiresIn = token ? 0 : jwt_expires(token), 1000)