如何解决如何删除外部反应式上下文警告之外的calculatedFn调用
我不可避免地有时会在异步回调中调用mobx.computedFn
函数。这会在控制台中填充我要删除的警告:
invoking a computedFn from outside an reactive context won't be memoized,unless keepAlive is set
MobX 4(https://github.com/mobxjs/mobx/issues/961)中有一个配置选项warnOnUnsafecomputationReads
,但是该标志不起作用,我也无法在文档中看到它。是否已弃用?我找不到更多引用。
Mobx 4将引入mobx.configure({warnOnUnsafecomputationReads:true})
可以选择将keepAlive
标志https://mobx.js.org/refguide/computed-decorator.html#options-for-computed添加到受影响的每个computedFn
中,但是我不想这样做只是为了避免警告。使用该标志有其不利之处,并可能导致内存泄漏,并且在许多情况下,计算是微不足道的,并且不能从捕获中受益。
keepAlive:如果任何人都没有观察到此计算值,请不要暂停它。请注意,这很容易导致内存泄漏,因为它将导致该计算值使用的每个可观察值,并将计算值保留在内存中!
问题
如何在异步回调中调用computefFn
方法以不触发MobX警告?有没有一种方法可以根据具体情况进行处理,因此可以对每个警告进行评估以确定是否可以将其隐藏?
或更好
如何将对异步回调中的computefFn
方法的调用编写为被视为处于响应上下文中?
解决方法
您是否尝试过通过runInAction
实用程序功能运行异步代码?
尝试将computedFn
调用包装在runInAction
内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。