使在计算值中使用的可观察对象被监视,即使在上次计算中没有使用

Make observables used in computed value watched even if not used in last computation

本文关键字:计算 观察 对象 监视      更新时间:2023-09-26

我只是想知道,是否有一种习惯的方法可以使在计算值中使用的可观察对象被监视,即使在上次计算中没有使用。

假设我有这样的代码:

@observable array = [];
@computed get arrayLength(){
  if (condition) return true;
  return this.array.length;
}

如果条件为真,则计算值将自动返回真,而不会执行此操作。看着数组。因此,如果数组在未来改变,arrayLength将不会被重新计算。

我使用的一种方法是引用可观察对象。如果我这样修改,上面的代码就可以工作了

@computed get arrayLength(){
  const array = this.array;
  if (condition) return true;
  return array.length;
}

有其他好的方法吗?或者写一个计算值,在某些情况下依赖于一个可观察对象,而在某些情况下不依赖?

谢谢你的建议

参见https://github.com/mobxjs/mobx/issues/613。简而言之呢?如果condition为真,为什么要重新计算呢?这不会影响计算的结果…