watch监听的是一个变量(或者一个常量)变化,而computed可以监听多个变量,但是这个变量一定是vue实例中的
例如,以下代码:
watch监听:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
</style>
</head>
<body>
<div id="app">
<p>
Ask a yes/no question:
<input v-model="question">
</p>
<p>{{ answer }}</p>
</div>
</body>
</html>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
el:"#app",
data:{
question:"",
answer:"你还没有提出问题"
},
watch:{
question:function(){
console.log("-------");
if(this.question==="你吃了吗?"){
this.answer = "吃了";
}else if(this.question==="你睡了吗?"){
this.answer = "睡不着";
}
}
}
});
</script>
当改变input中的question时,answer也会随着改变,watch监听的是变量question的值
computed:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
</style>
</head>
<body>
<div id="app">
<input type="button" value="改变" @click="change" />
<div>{{msg}}</div>
<div>{{reverseMsg}}</div>
<div>{{reverseMsg}}</div>
<div>{{reverseMsg}}</div>
</div>
</body>
</html>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
el:"#app",
data:{
msg:"hello"
},
computed:{
reverseMsg:function(){
return this.msg.split('').reverse().join('');
}
},
methods:{
change:function(){
this.msg="what are you 弄啥哩";
}
}
});
</script>
当点击按钮时,msg会发生改变,然后会执行reverseMsg函数,并且返回结果
本文详细解析了Vue框架中Watch与Computed特性的工作原理及使用场景。Watch用于监听单一变量变化,而Computed则能响应多个变量变化,适用于复杂的数据处理。通过示例代码,展示了如何利用这两种特性来实现数据的动态更新。

1318

被折叠的 条评论
为什么被折叠?



