计算属性与侦听器
2018-03-13 20:22
267 查看
vue之所以加载速度非常块,是因为在数据改变时,它并不是将所有组件都刷新,而是在重用代码的基础上对发生改变的地方进行渲染。同时,还得益于计算属性的使用:
利用函数方法也可以实现类似的效果,不同的是计算属性是基于它们的依赖进行缓存的。只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 firstName 还没有发生改变,再次访问 reversedName 计算属性会立即返回之前的计算结果,而不必再次执行函数。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数.
为什么需要缓存?假设我们有一个性能开销比较大的的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性 B 依赖于 A 。如果使用函数,每获得一次B就要调用一次函数进行计算,造成很大开销!
计算属性默认为get方法,也可以设定set方法,接收传入处理数据。例如传入originalName,set方法对其进行拆解并复制给firstName与lastName,并引起firstName与lastName改变,调用get()方法。
<div id="app">
<p>{{originalName}}</p>
<p>{{reverseName}}</p>
<button @click="deal()">反转名字</button>
</div>
<input v-model="listen">
</div>
1、计算属性
像绑定普通属性一样在模板中绑定计算属性。例如reverseName属性依赖于firstName和lastName,当firstName或lastName发生改变时,依赖于它的 reverseName 也会更新。利用函数方法也可以实现类似的效果,不同的是计算属性是基于它们的依赖进行缓存的。只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 firstName 还没有发生改变,再次访问 reversedName 计算属性会立即返回之前的计算结果,而不必再次执行函数。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数.
为什么需要缓存?假设我们有一个性能开销比较大的的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性 B 依赖于 A 。如果使用函数,每获得一次B就要调用一次函数进行计算,造成很大开销!
计算属性默认为get方法,也可以设定set方法,接收传入处理数据。例如传入originalName,set方法对其进行拆解并复制给firstName与lastName,并引起firstName与lastName改变,调用get()方法。
<div id="app">
<p>{{originalName}}</p>
<p>{{reverseName}}</p>
<button @click="deal()">反转名字</button>
</div>
let vue=new Vue({ el:'#app', data:{ firstName:'', lastName:'', originalName:"super tory" }, methods:{ deal(){ this.reverseName=this.originalName; } }, computed:{ reverseName:{ set(string){ let name=string.split(' '); this.firstName=name[1]; this.lastName=name[0]; }, get(){ return this.firstName+' '+this.lastName; } } } });
2、侦听器watch
在vue中提供一个钩子,侦听data中的某个变量是否改变,如果改变则执行响应函数。 <div id="app2"><input v-model="listen">
</div>
let vue2=new Vue({ el:'#app2', data:{ listen:'' }, watch:{ listen:function () { console.log("input内容发生改变"); } } });
相关文章推荐
- VueJs(7)---计算属性和侦听器
- VUE--(2)计算属性和侦听器
- Vue------第二天(计算属性、侦听器、绑定Class、绑定Style)
- 详解vue 计算属性与方法跟侦听器区别(面试考点)
- 深入浅析Vue.js计算属性和侦听器
- Vue中methods(方法)、computed(计算属性)、watch(侦听器)的区别
- 计算方法/侦听器/属性
- vue从入门到进阶:计算属性computed与侦听器watch(三)
- vue 计算属性 --setter应用小实例
- C语言 结构体中属性的偏移量计算
- vue2.0+基础知识连载(13)--- 计算属性的使用
- 天龙八部 - 其它 - 内攻、外攻、属性攻击与伤害计算方法
- Vue 计算属性
- computed 计算属性无法双向绑定
- vue2学习笔记——computed(计算属性)
- Vue之计算属性
- Vue.2.0.5-计算属性
- Vue--基础模板语法以及计算属性
- css选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先