computed
- computed就是用来计算属性的,就是一个数据依赖于其他数据,那么就把这个数据设计为computed,以下是代码示例
import Vue from "vue/dist/vue.js";
Vue.config.productionTip = false;
new Vue({
data: {
user: {
email: "123456789@qq.com",
nickname: "小明",
phone: "15935778911"
}
},
computed: {
displayName: {
get() {
const user = this.user;
return user.nickname || user.email || user.phone;
},
set(value) {
console.log(value);
this.user.nickname = value;
}
}
},
template: `
<div>
<div>
{{displayName}}
<button @click="add">set</button>
</div>
</div>
`,
methods: {
add() {
console.log("add");
this.displayName = "小红";
}
}
}).$mount("#app");
- 使用场景
适用于重新计算比较费时不用重复数据计算的环境。所有 getter和setter的this自动地绑定为Vue实例。如果一个数据依赖于其他数据,那么把这个数据设计为computed
watch
- watch就是对data的数据监听回调,主要有两个选项immediate和deep,immediate用来表示是否在第一次渲染的时候执行对应的函数,deep用来表示是否要监听对象的每一个property(属性值),无论嵌套的有多深,接下来举一个watch的例子
import Vue from "vue/dist/vue.js";
Vue.config.productionTip = false;
new Vue({
data: {
n: 0,
obj: {
a: "a"
}
},
template: `
<div>
<button @click="n += 1">n+1</button>
<button @click="obj.a += 'hi'">obj.a + 'hi'</button>
<button @click="obj = {a:'a'}">obj = 新对象</button>
</div>
`,
watch: {
n() {
console.log("n 变了");
},
obj:{
handler(){
console.log("obj变了");
},
deep:true
}
}
}).$mount("#app");
- 使用场景
当你需要在某个数据发生变化时调用某个函数或者做某些事时,可以使用watch来监听这个数据变化。watch的语法可以点击此链接到Vue官网进行学习
标题