Vue3中的computed,watch,watchEffect如何使用
一、computed姓:名:全名:{{person.fullname}}全名:import{reactive,computed}from'vue'exportdefault{name:'HelloWorld',setup(){letperson=reactive({firstName:"张",lastName:"三"})//computed简写形式,没考虑修改/*person.fullname=computed(()=>{returnperson.firstName+"-"
一、computed
姓:
名:
全名:{{person.fullname}}
全名:
二、watch
1、与 Vue2.x 中 watch 配置功能一致
2、两个小"坑":
监视 reactive 定义的响应式数据时: oldValue 无法正确获取、强制开启了深度监视(deep配置失效)
监视 reactive 定义的响应式数据中某个属性时:deep 配置有效
vu2 的写法
当前求和为:{{ sum }}
Vue3 中这样写
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})三、watchEffect
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}} 全名:
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















