vue的计算属性computed与侦听器watch

vue的计算属性computed和侦听器watch都是监听数据变化。

computed (计算)

其在vue单文件组件中就是对数据进行简单的一些逻辑计算,在项目开发中方便我们对原始数据处理。重要的是计算属性基于它的响应式依赖进行缓存的。只有当响应依赖关系变了即值发生变化了才会重新计算。否则,直接利用缓存,这样既避免多次调用函数又提升性能。

<div id="app">
	{{txt}}
</div>
<script>
	new Vue({
    el: "#app-01",
    data:{
        text: "123,456"  //结束不能带分号!!!
    },
    computed:{
    	// 所有计算属性都以函数形式写在computed选项内,最终返回计算的结果。
    	fullName:function(){
    		// 这里的this 指向的是当前的vue实例
			return this.text.split(',').reverse().join(",");
		}
    }
})
</script>

computed 有两个属性getter 和 setter,上面我们只用到了getter属性,默认是getter属性,如果需要主动去改变getter的值,可以通过setter来实现。

computed: {
  fullName: {
    // getter
    get: function () {
      return this.text
    },
    // setter
    set: function (newValue) {
      var names = newValue.split(' ')
      this.text = names[0]
    }
  }
}

watch (观察 侦听)

watch 则多数监听数据改变,去执行异步操作和逻辑复杂的操作。同样watch也是在当值发生改变才会触发,没有缓存机制。

<template>
  <div>
    {{answer}}
    <input type="text" v-model="val" name id />
  </div>
</template>
<script>
export default {
  data() {
    return {
      val: "",
      answer:""
    };
  },
  watch: {
    // 如果 `val` 发生改变,这个函数就会运行
    // newQuestion 新值,oldQuestion 旧值
    val: function(newQuestion, oldQuestion) {
      this.answer = oldQuestion;
    }
  }
};
</script>

watch的类型可以是{ [key: string]: string | Function | Object | Array }
一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。

发布了121 篇原创文章 · 获赞 151 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/feifanzhuli/article/details/103901713