vue.js中计算属性(computed)和监听器(watch)的区别。
一.计算属性的用法
1.虽然两者都能起到监听的作用,但是computed主要是用来处理复杂数据的,以便于代码维护和避免代码冗余。
例:当我们要将一个字符串全部转化为大写然后拼接另一个字符串
<template> <div>{{changeString.toUppercase()+name}}</div> </template> <script> data(){ return{ changeString:'xiao', name:'KE AI' } } </script>
可以看到在模板中的代码太复杂,就违背了vue.js的简介性,我们便可以使用computed对需要的值进行处理。
<template> <div>{{sweetName}}</div> </template> <script> data(){ return{ changeString:'xiao', name:'KE AI' } } computed:{ sweetName:{ return changeString.toUppercase+this.name } } </script>
可以看到模板中现在用sweetName取代了原来的一大串,这就是computed的妙用。
二.侦听器watch的用法
<template> <button @click="addNum">{{num}}</button> </template> <script> data(){ return{ num:1, } } watch:{ num(newNum,oldNum):{ console.log(newNum,oldNum); } } methods:{ addNum(){ num++ } } </script>
我们可以对某个值进行监听,当侦听的值发生改变时,可以进行相应的操作。
重点1:当监听的值是对象中某一个属性的时候,我们不能直接使用对象为方法名,以下是对对象的监听
<template> <button @click="addNum">{{obj.num}}</button> </template> <script> data(){ return{
obj:{
num:1
} } } watch:{ ['obj.num'](newNum,oldNum):{ console.log(newNum,oldNum); } } methods:{ addNum(){ obj.num++ } } </script>
重点2:侦听器监听对象,当对象中的任意值发生改变,都要监听到
<template> <button @click="addNum">{{obj.num}}</button> </template> <script> data(){ return{ obj:{ num:1,
cont:2,
list:[]
} } }, watch:{ obj:{
handler(newVal, oldVal) {
console.log(newNum,oldNum); 输出的为obj改变后和改变前的值
},
immediate:false, //是否在obj创建后立即执行
deep:true //deep意为深度检测
}
},
methods:{ addNum(){ obj.num++ } } </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理