我想了解MobX中when的用法
我刚刚创建了一个简单的存储(ErrorStore),我想用它来保存应用程序错误,并且当可观察到的更改通知并指定(或另一个组件)发送错误详细信息时,可以使用该存储。 我正在使用一个可观察到的错误,它是一个简单的对象,并且具有计算所得的属性来拦截更改,每次我将错误消息和activate标志设置为true时,我都会将其重置。 我不知道为什么带有新错误的控制台消息仅出现一次。 有人知道我在做什么错吗? 干杯
class ErrorStore {
@observable error;
constructor() {
this.error = {
activate: false,
message: ''
}
when (
() => { this.errorGenerated; console.log("New error generated" , this.errorGenerated ) } ,
() => {
this.doRequest()
}
);
}
@computed get errorGenerated () {
return (this.error.activate === true && this.error.message.length > 0);
}
@action setError = (message) => {
this.error = Object.assign( this.error, {
activate : true,
message : message
})
}
doRequest = async () => {
let r = await axios.post({
url : "/myendopoint",
data : {
error: this.error.message
}
});
if(r.success) {
console.log("Error has been sent")
this.reset()
}
}
@action reset = () => {
this.error = {
activate: false,
message: '',
}
}
}
答案 0 :(得分:0)
基本上,您需要在第一个函数(谓词)时添加return
when (
() => { console.log("New error generated" , this.errorGenerated );
return this.errorGenerated;
},
() => {
this.doRequest()
}
);
那么,当this.errorGenerated返回true时,它将接下来调用this.doRequest()(将在何时处置整个对象)
有关更多参考,请查看以下示例:https://codepen.io/wizly/pen/yXapdZ
对于文档,请检查以下内容:https://mobx.js.org/refguide/when.html