Vue3 入门(ref)
Vue3 入门(ref)
let name = ref('jack')
- 首先我们得明白,
ref
函数返回的是一个RefImpl
对象的实例,所以此时name
的值是一个复杂数据类型Object
,它里面有个value
属性,就是它的值,而其它的属性皆是下划线开头的,我们不关注,因为这类属性一般不是给我们开发用的 - 在
Vue3
中,想要实现响应式,就得借助ref
或reactive
,这是人家底层实现响应式之后给你抛出的的一套语法 RefImpl
的全称是Reference Implement
,即引用实现。Ref
也能实现对象的响应式,因为当它碰到对象时,会用Proxy
去代理,xxx.value.xxx
就能拿到这个Proxy
了- 在
RefImpl
中,基本数据类型是用Object.defineProperty
实现的,对象类型是用Proxy
实现的 - 在
Vue2
中,直接通过数组下标赋值是不行的,但在Vue3
中可以,因为它用的是Proxy
代理
在
js
代码中,若想实现那种响应式的值的改变,那么就得去改变该对象里面value
的值,不能直接给name
赋一个其它值,因为Vue3
中的响应式得借助RefImpl
对象来实现在
template
模板中是不需要.value
的,因为Vue3
在解析模板的时候,当发现它是RefImpl
对象时,会自动去取它的value
属性并展示出来
这一路,灯火通明