vue3响应式原理
Ref函数
创建基本类型
和对象类型
的响应式数据
- 改值要加value
1 | let age = ref(18) |
- ref创建对象用的还是reactive,获取对象里的值要用.value(用reactive创建可以省略)
1 | car.value.price = 10 |
Reactive函数
创建对象类型
的响应式数据
1 | let car = reactive({ brand: '奔驰', price: 100 }) |
- 能修改对象里的属性的值,但不能一下修改整个对象,页面不会更新
要用Object.assign(obj1,obj2)
,obj1被覆盖(相同的属性)和增加(新的属性),还是响应式的
1 | Object.assign(car,{brand:’奥迪’,price:1}) |
- 用ref可以改整个对象,用value
1 | car.value={ brand:’奥迪’,price:1} |
- 直接打印ref定义的x,是一个ref对象,因为要对象里的value值,所以要加.value
- Reactive定义的对象,自动帮你拆包了,所以不用加.value,
打印reactive定义的对象里的ref定义的属性,也不用加.value
1 | let obj = reactive({ |
Proxy
- Proxy可以增删改查响应式
- 比
object.defineproperty
多一个deleteProperty
- set不仅能改还能增,且函数里面有参数
1 | new Proxy(data, { |