1.了解setup
2.reactive
把数组包装成响应式的(只能包装复杂数据类型object和array)
3.分解数据
4.ref的基本使用
5.ref包装复杂数据类型
ref函数,可以把简单数据类型包裹为响应式数据(复杂类型也可以),注意JS中操作值的时候,需要加.value属性,模板中正常使用即可
6.toRef的使用
转换响应式中某个属性为单独响应式数据,并且转化后的值和之前是关联的(ref也可以转换,但是值并非关联)
- 问题 1:模板中都要使用
obj.进行获取数据,麻烦。 - 问题 2:明明模板中只用到了 name 和 age,却把整个 obj 进行了导出,没必要,性能浪费
不能进行解构赋值,结构出的数据类型会丢失响应式
解决:使用name.value进行修改
7.roRefs
作用:转换响应式对象中所有属性为单独响应式数据,并且转换后的值和之前是关联的
简单写法:
8.computed基本使用
computed基于依赖进行缓存,产生一个新结果
watch监听数据的变化,根据变化后的新值进行副作用相关的处理(发请求,操作,DOM,操作本地数据)
computed其实还可以接收一个对象
9.计算属性的高级用法
get() 在获取数据的时候会主动调用get函数,拿到结果
set() 设置数据的时候会主动调用set函数,newValue 就是修改后的新值
页面上v-model的值改变了需要用set(newValue)来获取更新后的新值然后修改
10.watch
(1)可以监听reactive内部数据
注意1:监听reactive内部数据时,强制开启了深度监听,且配置无效,监听的时候newValue和oldValue是全等的
(2)直接修改 obj等于一个新对象,不能被监听到
watch 监听的是obj这个reactive的内部数据,对内部数据的修改才会被观测到
(3)reactive内部的复杂数据类型也是一个reactive
(4)监听ref,处理监听的第一种方法
监听ref数据age,会触发后面的回调,不需要.value
监听多个ref数据(这里面不一定是ref,reactive也行)
立即触发监听
watch监听ref数据类型默认是一个浅监听,可以开启深度监听 注意:默认只会监听最外面一层(obj.value然后才是hobby之类的)
第一种方法:可以触发监听,视图也会更新
第二种方法:开启深度监听
第三种方式:针对复杂数据类型
注意点: