欢迎光临散文网 会员登陆 & 注册

Vue3中customRef的使用

2022-03-13 11:03 作者:忘魂儿  | 我要投稿

如其名,自定义Ref,可想而知它一定会返回一个Ref对象,那么开始吧

这里我们先定义这么一个函数,里面封装的是我们自己定义的ref

模板中

页面上

上图所示,我们能读取,但是真能改变值吗?

答案是不能!有人就会说了,我明明把最新的值给value赋值了啊,咋能够呢?

这么说吧,你呢确实赋值了,但是get没有重新执行,模板呢还是未修改之前的模板,也就是说你没有通知Vue去重新渲染模板

那么如何通知Vue去重新解析模板呢?

customRef中的回调会接收底层的两个参数,一个是track,也就是追踪,你说它追踪什么呢?欸,追踪的就是get返回值的改变,它追踪到了才会反应到页面上来,另一个是trigger,也就是触发,触发啥?触发开关,开关干嘛的?通知Vue去重新解析模板

问题来了,这两个参数啥前用?你想啊,当你的值改变完之后是不是得通知Vue去重新解析模板?重新解析完模板之后是不是会重新调用get读取值?那么读取返回值之前是不是得先追踪到变化?好了,代码上见!

结果如下:最终拿到这个改变后的值了

有人又说了,这有啥用?我直接用官方给的ref不香吗?

那咱们做个实验,你说我要是一直往输入框中输入东西,会发生什么呢?

好家伙,好么,这得耗多少资源,一次输入就响应一次,当真看恐怖啊!

问题来了,如何解决?

有人就说,你咋啷个笨?你就开个定时器不就可以了?

哟呵,变异了,错的离谱了,差点定时器开关

加上定时器开关

模板中

页面上,触发页面更新的时机变成了,连续按键停止点后的500ms

但是有点不足,延迟时间写死了,改需求

完事!这就是防抖!

Vue3中customRef的使用的评论 (共 条)

分享到微博请遵守国家法律