uniapp项目弊端:如果换文件夹或者重新导入uniapp项目不会自动识别为uniapp项目,需要右键文件夹重新识别项目类型
使用组合式+单文件组件+vue3来实现
ref
- ref参数一般是基本数据类型,亦可以是对象类型
- 参数是对象类型,本质还是reactive,系统会自动将ref转换为reactive,如 ref(1) ==> reactive({value:1})
- 在模板中访问ref中的数据,系统会自动添加.value,在JS中访问ref中的数据,需要
手动添加.value
- ref的底层原理同reactive一样,都是Proxy
- ref中可以使用数组的reduce等方法
reactive
- reactive的参数一般是对象或者数组,能够使复杂数据变为响应式数据
reactive
的响应式是深层次的,底层本质是将传入的数据转换为Proxy对象- 在JS中访问ref的值需要手动添加.value,访问reactive不需要
watch
watch(name, (curVal, preVal)=>{ // 业务处理 }, options)
- name:需要帧听的属性
- (curVal,preVal)=>{ //业务处理 } 箭头函数,是监听到的最新值和本次修改之前的值,此处进行逻辑处理。
- options:配置项,对监听器的配置,如:是否深度监听。
- 监听
多个
响应式数据:watch([count,obj],()=>{})
- 监听对象中的某个属性的变化:
watch(()=>obj.name,()=> {})
- 深度监听deep、默认执行immediate:
watch(name,()=>{},{deep:true,immediate:true})
watchEffect
- 侦听器、副作用函数
- 监听引用数据类型的所有属性,一旦运行就会立即监听,组件卸载的时候会停止监听
- 在一些情况下,可以显式调用返回值以停止侦听
- 侦听副作用传入的函数可以接收一个 onInvalidate 函数作入参,用来注册清理失效时的回调。
- 副作用即将重新执行时,失效回调会被触发
- 侦听器被停止 (如果在 setup() 或生命周期钩子函数中使用了 watchEffect,则在组件卸载时),失效回调会被触发
- 如果要操作“更新之后的DOM”,就要配置 flush: ‘post’。
1 | <script setup> |