1.methods 只适合业务逻辑处理
1.数据不会缓存
methods() {}
2.watch 只适合监听单个数据
1.watch监听定义在data中属性的值
2.不会缓存,可以异步
watch: {
fullName(newVal, oldVal) {
console.log(newVal, oldVal)
}
}
3.computed 适合监听多个数据、computed定义的函数 可以直接当作属性使用
1.定义在computed中的方法就不能在data中定义
2.如果computed中的方法是v-model双向绑定的值、那么就要用到get()、set(val)方法双向绑定才会生效
3.会缓存计算的值方便下次使用、不能异步
computed: {
resNum: {
get() {
return
},
set(val) {
}
}
}
三者的执行顺序优先级:dom加载完毕后,先执行 computed ==> watch ==> methods
参考:https://blog.csdn.net/halo1416/article/details/83270891
<template>
<div>
<input type="text" v-model="leftNum" placeholder="请输入数字"/> +
<input type="text" v-model="rightNum" placeholder="请输入数字"/> =
<input type="text" v-model="resNum" />
</div>
</template>
<script>
export default {
data() {
return {
leftNum: '',
rightNum: '',
}
},
computed: {
resNum: {
//get方法读取当前resNum值时调用、并根据相关数据计算返回resNum的值
get() {
return Number(this.leftNum) + '-' + Number(this.rightNum)
},
//set方法监听对应值改变时触发的回调函数、场景:改变等号右边的值,等号左边的值相对应改变
set(val) {
const n = val.split('-')
this.leftNum = n[0]
this.rightNum = n[1]
},
},
},
}
</script>