Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环检测到@computed属性的错误_Javascript_Reactjs_Mobx_Mobx React - Fatal编程技术网

Javascript 循环检测到@computed属性的错误

Javascript 循环检测到@computed属性的错误,javascript,reactjs,mobx,mobx-react,Javascript,Reactjs,Mobx,Mobx React,我只是MobX的初学者。我在MobX中尝试计算属性时遇到了这个错误 [mobx] Cycle detected in computation Store@1.values: function () { initializeInstance(this); return this[prop]; } 我创建了一个具有可观察计算属性的store类。当我试图在react功能组件中使用它时,它给了我这个错误。我看到很多github问题都是针对同一个错误消息而出现的,但都是针对非常特定的情况。我理解

我只是MobX的初学者。我在MobX中尝试计算属性时遇到了这个错误

[mobx] Cycle detected in computation Store@1.values: function () {
  initializeInstance(this);
  return this[prop];
}

我创建了一个具有可观察计算属性的store类。当我试图在react功能组件中使用它时,它给了我这个错误。我看到很多github问题都是针对同一个错误消息而出现的,但都是针对非常特定的情况。我理解这是因为计算属性的值在至少计算一次之前就被访问了。我想不出的是如何避免这种情况。我在这里做了一个非常简单的用例,可以重现这个错误。

您有两个类字段,它们的名称相同
值,一个是
可观察的
,另一个是
计算的
,您不能同时使用这两个字段,实际上不需要两个字段

export default class Store {
  @observable values; // <--- Not needed

  constructor() {
    this.selectedFilters = {};
    this.assetMap = {};
    this.searchResults = {};
  }

  @computed get values() {
    return [{}];
  }
}
或者在你的情况下,像这样的东西可能会有用

export default class Store {
  @observable values = []

  @computed get filteredValues() {
    return this.values.filter(someFilterFunction);
  }
}

文档中有更多内容

感谢您的澄清。我的印象是,除非标记为可观察,否则任何属性(计算或其他)的更改都不会通知观察者。
export default class Store {
  @observable values = []

  @computed get filteredValues() {
    return this.values.filter(someFilterFunction);
  }
}