微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何删除外部反应式上下文警告之外的calculatedFn调用

如何解决如何删除外部反应式上下文警告之外的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内。

https://mobx.js.org/best/actions.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。