Vue3 新玩法!我能操控计算属性 Computed!

需求是这样的,我有一个变量 sum,是通过computed去计算的,且 sum 依赖的变量有的是响应式的,有的不是响应式的,所以会造成以下的后果,当非响应式变量改变时,并不会触发sum 的响应式更新,只有响应式变量改变时才会触发sum的响应式更新。

需求是这样的,我有一个变量 sum,是通过computed去计算的,且 sum 依赖的变量有的是响应式的,有的不是响应式的,所以会造成以下的后果,当非响应式变量改变时,并不会触发sum 的响应式更新,只有响应式变量改变时才会触发sum的响应式更新。

背景

最近在做一个需求的时候,用到了一个 Vue3 内置的 API,发现真的非常实用,分享给大家。

需求是这样的,我有一个变量sum,是通过computed去计算的,且sum依赖的变量有的是响应式的,有的不是响应式的,所以会造成以下的后果,当非响应式变量改变时,并不会触发sum的响应式更新,只有响应式变量改变时才会触发sum的响应式更新。

图片图片

所以我需要用到一个 Vue3 的内置 API,它就是customRef。

customRef

创建一个自定义的 ref,显式声明对其依赖追踪和更新触发的控制方式。

类型

图片图片

详细信息

customRef()预期接收一个工厂函数作为参数,这个工厂函数接受track和trigger两个函数作为参数,并返回一个带有get和set方法的对象。

一般来说,track()应该在get()方法中调用,而trigger()应该在set()中调用。然而事实上,你对何时调用、是否应该调用他们有完全的控制权。

实践小案例:防抖 Ref

创建一个防抖 ref,即只在最近一次 set 调用后的一段固定间隔后再调用:

图片图片

在组件中使用:

图片图片

可控的 computed

图片图片

再回到一开始的话题,我遇到的问题是:当非响应式变量改变时,并不会触发sum的响应式更新,只有响应式变量改变时才会触发sum的响应式更新。

所以我们需要当非响应式变量count1、count2改变的时候,去手动触发 computed 的计算,这样才能更新sum,但是 computed 返回的不是一个函数啊,我们要怎么去手动触发计算呢?

所以这时候就需要一个可控的 computed,它拥有以下功能:

1、能根据响应式变量去自动触发计算更新

2、提供一个方法让用户手动去调用触发更新

期望使用方式是这样的:

图片图片

具体的代码实现如下:

图片

图片

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2024年5月27日 17:11
下一篇 2024年5月27日 17:12

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信