我必须验证用户是否已使用某些令牌登录,以便在测试下一个示例中的当前令牌。
我有两个可以想到的选择。
选项1
在商店的构造函数上执行
export class MyStore {
@observable token = "sometoken";
@observable authenticated = false;
constructor() {
this.checkAuth();
}
@action
checkAuth() {
fetch("http://localhost:3001/validate/" + this.token)
.then(res => res.json())
.then(data => {
this.authenticated = data.validated;
});
// catch etc
}
}
选项2:
在使用数据的组件中使用componentDidMount
方法。
两种方法都有效,但是处理这种状态的最佳实践到底是什么?
答案 0 :(得分:0)
我肯定会选择第一个选项。如果您不总是需要身份验证-例如某些部分是公共的-则不要在商店构造函数中调用this.checkAuth()
。如果所有部分都需要认证,那么看起来像这样。
应该避免选择2,因为这会使服务器不必要地往返以重新验证已经验证的令牌。通常,MobX提供了很棒的工具来最小化生命周期方法的使用并编写更简洁的代码。