我试图了解在MobX中何时使用
我刚创建了一个简单的存储(ErrorStore),我想用它来保存应用程序错误,以及当observable更改notify和enpoint(或另一个组件)以发送错误详细信息时。我正在使用一个可观察的错误,这是一个简单的对象,并且具有计算属性拦截更改,每次我将错误消息和激活标志设置为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: '',
}
}
}
基本上你需要在第一个函数(谓词)中添加return
when (
() => { console.log("New error generated" , this.errorGenerated );
return this.errorGenerated;
},
() => {
this.doRequest()
}
);
那么什么时候当this.errorGenerated返回true时它会调用next this.doRequest()(这会将整个部署时)
有关更多参考,请查看此示例:https://codepen.io/wizly/pen/yXapdZ
对于doc,请查看:https://mobx.js.org/refguide/when.html