请告知使用mobx操作(https://mobx.js.org/refguide/action.html)来获取远程api或执行类似操作是否正确:
@action readSomething() {
this.observableLoading = true;
executeRead(
this.param1,
mappedData => {
this.observableData = mappedData;
this.observableLoading = false;
},
() => {
console.log('error occurred');
},
);
}
如果该方法没有违反mobx商店和商店行动背后的想法,那么如何报告提取错误?引入专用可观察的错误管道?
答案 0 :(得分:1)
我将假设executeRead
在执行第二个参数操作之前执行异步操作。在这种情况下,这是错误的用法。动作装饰器仅适用于函数的第一行。您可以咨询MobX docs here。您可以做的是使用runInAction
:
@action readSomething() {
this.observableLoading = true;
executeRead(
this.param1,
mappedData => {
runInAction(() => {
this.observableData = mappedData;
this.observableLoading = false;
})
},
() => {
console.log('error occurred');
},
);
}
如果您希望在UI上看到提取错误,则肯定可以再次观察到。您的observableLoading
可以是observableState
并保持“正在加载”,“完成”或“错误”状态之一。