从MobX行动中回复承诺

时间:2017-08-02 19:02:58

标签: reactjs react-native mobx

可以从操作中返回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')
    })
}

1 个答案:

答案 0 :(得分:0)

如果您的功能对商店的状态没有影响,则无需将其作为操作。所以你不必担心返回一个Promise。

来自文档:

  

任何应用程序都有操作。操作是修改状态的任何操作。使用MobX,您可以通过标记它们在您的代码中明确表达您的操作。动作可以帮助您更好地构建代码。

在这里,您的操作不会修改状态。所以你可以删除@action装饰器。

有人说;确实,在开始时,只更新UI并且不在商店中维护异步查询的结果是相当容易的。但是从长远来看,你会发现你想要管理一个isLoading变量来向用户显示在后台完成某些事情,然后你会想要在小吃栏中显示错误...而你的简单的提取会对UI产生很大的影响。这是使用mobx商店将帮助您管理组件外的状态的地方。

所以,你的行动可能确实是一个动作,你可能只想更新你的商店的状态而不是返回你必须要处理的承诺。