学习链接:学习Vue3 第六章(认识Ref全家桶)_小满zs的博客-CSDN博客
接受一个内部值,并返回一个响应式且可变的ref对象。ref对象仅有一个 .value property ,指向该内部值。
案例
我们这样无法改变message的值,因为message不是响应式的,无法被vue跟踪,需要改成ref
{{ message }}
改为ref
Ref TS对应的接口
interface Ref{value: T
}
注意:被ref包装后,需要用.value来进行赋值
{{ message }}
判断是不是一个ref对象
创建一个跟踪自身 .value变化的ref, 但不会使其值也变成响应式的
例子
修改其属性是非响应式的,这样是不会改变的
{{ message }}
例子2
这样是可以被监听到的修改value
{{ message }}
强制更新页面DOM
这样也可以改变其值
{{ message }}
自定义ref
customRef 是工厂函数要求我们返回一个对象,并且实现 get 和 set,适合去做防抖之类的
{{ name }}
追加问题:
track: 收集依赖。track()函数的调用,等同于手动 收集依赖;然后使用return value将值返回
trigger:触发依赖。 trigger()函数的嗲用,等同于用户手动 触发依赖更新。
vue3 中Ref本质也是使用track 与trigger去收集与触发依赖