可以从操作中返回promises还是针对商店模式?
在每次成功获取操作后设置一个observable属性以更新到UI似乎是很多不必要的工作。
这样就可以了:
@action signup(username: string, password: string) {
return new Promise(async (resolve, reject) => {
if (success) {
return resolve(username)
}
return reject('user_not_found')
})
}
答案 0 :(得分:0)
如果您的功能对商店的状态没有影响,则无需将其作为操作。所以你不必担心返回一个Promise。
来自文档:
任何应用程序都有操作。操作是修改状态的任何操作。使用MobX,您可以通过标记它们在您的代码中明确表达您的操作。动作可以帮助您更好地构建代码。
在这里,您的操作不会修改状态。所以你可以删除@action
装饰器。
有人说;确实,在开始时,只更新UI并且不在商店中维护异步查询的结果是相当容易的。但是从长远来看,你会发现你想要管理一个isLoading
变量来向用户显示在后台完成某些事情,然后你会想要在小吃栏中显示错误...而你的简单的提取会对UI产生很大的影响。这是使用mobx商店将帮助您管理组件外的状态的地方。
所以,你的行动可能确实是一个动作,你可能只想更新你的商店的状态而不是返回你必须要处理的承诺。