错误: [mobx] 不允许计算值通过更改已观察到的可观察量来引起副作用.已尝试修改:



我正在尝试为过滤事件添加和删除上传 gif

我在哪里失败了?

@observable loading = false; //Loading variable being tracked in component
@computed get filtered() {
this.loading=true;//true
let filteredList = this.list.filter(
item => item.data.some(
obj => obj.tr_x.toLowerCase().includes(this.filterTermValue)
)
);
this.loading=false;//false
if (filteredList.length)
return filteredList;
return this.list;
}

什么是@computed装饰?

它是一种缓存。如果参数没有改变,则不计算,只返回以前的计算值。

因此,作为避免副作用的良好做法,这些@computed函数不能改变任何东西,只需计算幂等信息。

您需要查看堆栈调用,以确保更改任何属性的代码不会被@computed函数调用。

最新更新