对于MobX,@computed
属性仅在从observer
或反应性上下文访问时才被缓存。例如:
class Foo {
@computed
get somethingExpensive() { return someReallyExpensiveOperation() }
}
const f = new Foo();
setInterval(() => console.log(f.somethingExpensive), 1);
将始终调用someReallyExpensiveOperation()
,因为computed
在响应上下文之外被调用。
是否有办法“输入”反应性上下文以获得@computed
回调,setTimeout
事件处理程序等的EventEmitter
的好处?
编辑:另一种放置方式..如果我将装饰器更改为
class Foo {
@computed({ requiresReaction: true })
get somethingExpensive() { return someReallyExpensiveOperation() }
}
..当从setInterval
示例访问时,它将抛出。