重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇“Vue3中的computed,watch,watchEffect怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue3中的computed,watch,watchEffect怎么使用”文章吧。
创新互联是一家专业提供祥云企业网站建设,专注与网站设计、成都网站设计、成都h5网站建设、小程序制作等业务。10年已为祥云众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
姓:
名:
全名:{{person.fullname}}
全名:
1、与 Vue2.x 中 watch 配置功能一致
2、两个小"坑":
监视 reactive 定义的响应式数据时: oldValue 无法正确获取、强制开启了深度监视(deep配置失效)
监视 reactive 定义的响应式数据中某个属性时:deep 配置有效
当前求和为:{{ sum }}
1、情况一:监视ref所定义的一个响应式数据
当前求和为:{{ sum }}
>
watch 还可以传一个配置项,把 immediate 等配置传进去:
watch(sum, (newValue, oldValue) => { console.log("sum发生了变化", newValue, oldValue); },{immediate:true})
2、情况二:当有多个信息需要同时监视时
当前求和为:{{ sum }}
信息为:{{ msg }}
3、情况三:监视reactive所定义的一个响应式数据
姓名:{{ person.name }}
年龄:{{ person.age }}
薪资:{{ person.job.j1.salary }}K
4、情况四:监视reactive所定义的一个响应式数据某个属性
//情况四:监视reactive所定义的一个响应式数据某个属性 watch(()=>person.name, (newValue, oldValue) => { console.log("person的name发生了变化", newValue, oldValue); })
5、情况五:监视 reactive 所定义的一个响应式数据某些属性
//情况五:监视reactive所定义的一个响应式数据某个属性 watch([()=>person.name,()=>person.age], (newValue, oldValue) => { console.log("person的name或age发生了变化", newValue, oldValue); })
6、特殊情况,监视对象中的某个对象属性,要开始deep:true
watch(()=>person.job, (newValue, oldValue) => { console.log("person的job发生了变化", newValue, oldValue); },{deep:true})//由于监视的是reactive对象中的某个属性,deep奏效
7、监视 ref 定义的对象响应数据,需要.value或deep:true
let person = ref({ name: "张三", age: 18, job:{ j1:{ salary:20 } } }) watch(person.value, (newValue, oldValue) => { console.log("person的value发生了变化", newValue, oldValue); }) 或 watch(person, (newValue, oldValue) => { console.log("person的value发生了变化", newValue, oldValue); },{deep:true})
watch
的套路是:既要指明监视的属性,也要指明监视的回调
watchEffect
的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性
watchEffect
有点像computed
:
。但computed
注重的计算出来的值(回调函数的返回值),所以必须要写返回值
。而watchEffect
更注重的是过程(回调函数的函数体),所以不用写返回值
//watchEffect所指定的回调中用到的数据只要发生变化,则直接重新执行回调 watchEffect(()=>{ const xl = sum.value const x2 = person.age console.log( "watchEffect配置的回调执行了") })
例如还用上边的例子:
import {reactive,watchEffect} from 'vue' export default { name: 'Demo', setup() { let person = reactive({ name: "张三", age: 18, job:{ j1:{ salary:20 } } }) watchEffect(()=>{ const x1 = person.name; console.log("watchEffect所指定的回调执行了"+x1); }) return { person } } }
最后,我们使用 watch 和 watchEffect 实现姓名的例子
姓: 名: 全名:{{fullName}} 全名:
以上就是关于“Vue3中的computed,watch,watchEffect怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。