深入浅析Vue中的 computed 和 watch
网络编程 2021-07-04 16:45www.168986.cn编程入门
puted 计算属性是通过属性计算得来的属性,watch属性变化,就会触发监听的函数。狼蚁网站SEO优化通过本文给大家介绍Vue中的 puted 和 watch,感兴趣的朋友一起看看吧
puted
计算属性通过属性计算得来的属性
计算属性,是在相关联的属性发生变化才计算,计算过一次,如果相关属性没有变化,下一次就不需要计算了,直接去缓存的值
a:<input type="number" v-model.number="a" /> b:<input type="number" v-model.number="b" /> <!--c:<input type="number" v-model.number="c" />--> 总和{{sum()}} 总和{{count}} 平均值{{avg}} <p v-once>单价{{price}}</p> <p>数量<input type="number" v-model.number="count"/></p> <p>总价{{sum}}</p> <p>运费{{free}}</p> <p>应付{{pay}}</p> data: { a: '', b:'', c:'', price: 28.8, count: '', free: 10 }, puted: { count(){ console.log('计算属性触发了'); return this.a+this.b; }, avg(){ return this.count/2; }, sum(){ return this.price this.count; }, pay(){ if(this.count>0){ if(this.sum>=299){ return this.sum; }else{ return this.sum + this.free; } }else{ return 0; } } }
watch
属性变化,就会触发监听的函数。
监听属性变化,一般是用于跟数据无关的业务逻辑操作。
计算属性,适用于属性发生变化后,需要计算得到新的数据。
<div id="app"> a: <input type="number" v-model.number="a" /><br /> b: <input type="number" v-model.number="b" /><br /> 总和{{count}} <br /><br /><br /> name: <input type="text" v-model="obj.name" /><br /> age: <input type="text" v-model.number="obj.age" /><br /> </div> <script src="vue.js"></script> <script> var vm = new Vue({ el: '#app', data: { a: '', b: '', count: '', obj: { name: '', age: '' } }, watch: { a(newVal, oldVal){ console.log('触发了a-watch'); this.count = this.a + this.b; }, b(newVal){ console.log('触发了b-watch'); this.count = this.a + this.b; }, // obj(newVal, oldVal){ // console.log('触发了obj的监听'); // } // obj: { //监听对象中的每一个值 handler(newVal, oldVal){ console.log('触发了obj的监听'); }, deep: true//深度监听 }, //监听对象中的某个属性 'obj.name': function(){ console.log('触发了obj.name的监听'); } } }) </script>
watch 也可以在methods里面进行监听配置
<div id="app"> a: <input type="number" v-model.number="a" /><br /> b: <input type="number" v-model.number="b" /><br /> 总和{{count}} <br /><br /><br /> name: <input type="text" v-model="obj.name" /><br /> age: <input type="text" v-model.number="obj.age" /><br /> <button @click="btnAction()">开始监听</button> </div> <script src="vue.js"></script> <script> var vm = new Vue({ el: '#app', data: { a: '', b: '', count: '', obj: { name: '', age: '' } }, methods: { btnAction(){ this.$watch('a', (newVal, oldval)=>{ console.log('监听到了a的变化'); console.log(newVal, oldval); }) this.$watch('obj.name', (newVal, oldval)=>{ console.log('监听到了obj.name的变化'); console.log(newVal, oldval); }) this.$watch('obj', (newVal, oldval)=>{ console.log('监听到了obj的变化'); console.log(newVal, oldval); }, { deep: true }) } } }) // vm.$watch('a', (newVal, oldval)=>{ // console.log('监听到了a的变化'); // console.log(newVal, oldval); // }) // // vm.$watch('obj.name', (newVal, oldval)=>{ // console.log('监听到了obj.name的变化'); // console.log(newVal, oldval); // }) // // vm.$watch('obj', (newVal, oldval)=>{ // console.log('监听到了obj的变化'); // console.log(newVal, oldval); // }, { // deep: true // }) </script>
狼蚁网站SEO优化在看下puted 和 watch
都可以观察页面的数据变化。当处理页面的数据变化时,我们有时候很容易滥用watch。 而通常更好的办法是使用puted属性,而不是命令是的watch回调。
/html: 我们要实现 第三个表单的值 是第一个和第二个的拼接,并且在前俩表单数值变化时,第三个表单数值也在变化 / <div id="myDiv"> <input type="text" v-model="firstName"> <input type="text" v-model="lastName"> <input type="text" v-model="fullName"> </div> <!--js: 用watch方法来实现--> //将需要watch的属性定义在watch中,当属性变化氏就会动态的执行watch中的操作,并动态的可以更新到dom中 new Vue({ el: '#myDiv', data: { firstName: 'Foo', lastName: 'Bar', fullName: 'Foo Bar' }, watch: { firstName: function (val) { this.fullName = val + ' ' + this.lastName }, lastName: function (val) { this.fullName = this.firstName + ' ' + val } } }) <!--js: 利用puted 来写--> //计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。 //这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必执行函数。 new Vue({ el:"#myDiv", data:{ firstName:"Den", lastName:"wang", }, puted:{ fullName:function(){ return this.firstName + " " +this.lastName; } } })
很容易看出 puted 在实现上边的效果时,是更简单的。
以上所述是长沙网络推广给大家介绍的Vue中的 puted 和 watch,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程