vue2.x版computed和watch怎么使用
今天小编给大家分享一下vue2.x版computed和watch怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
基础使用
在computed中,声明一个函数,并需要提供一个返回值,用于在页面展示或者结合其他方法进行处理
结合state状态使用
通过changeName返回一段依赖于name的字符串
<li>computed基本使用</li><li>name值:{{ name }}</li><li>{{ changeName }}</li>data() {return {name: "zhangsan",};},computed: {changeName: function () {return `一段依赖于name:${this.name}的文字`;},},
使用其他组件状态
主动触发computed方法,对比不依赖于其他状态下的区别,通过点击事件,主动触发一些操作
<li>{{ isCache }}</li><li>{{ cacheTip }}</li><li>{{ changeCache }}</li><li><button @click="handleChange">修改文字</button></li>data() {return {cacheTip: "cacheTip原始值",};},computed: {isCache: function () {return `不依赖于任何属性值的一段文字`;},changeCache: function () {return `依赖于cacheTip,${this.cacheTip}`;},},methods: {handleChange() {this.cacheTip = "cacheTip状态被修改";},},
当我们点击修改状态时,可以看到,cacheTip被修改只会,依赖于cacheTip的changeCache也会发生改变
isCache因为不和其他状态关联,所以还是保持原来的值不变
getter VS setter
上面的cacheTip,或者isCache,在computed的通用方法中,默认都是使用了getter方法去获取处理过的值
可以写成:
isCache: { setter:function () { return `不依赖于任何属性值的一段文字`; }}
通过getter和setter,可以进一步对需要处理的状态进行处理
<li>{{ firstName }}</li><li>{{ lastName }}</li><li>{{ setterGetter }}</li><li><button @click="handleChangeFirst">修改文字</button></li>data() {return {firstName: "lewyon001",lastName: "布欧001",};},computed: { setterGetter: { // getter get: function (newValue) { console.log("newValue", newValue); return this.firstName + " " + this.lastName; }, // setter set: function (newValue) { console.log("newValue", newValue); this.firstName = `${newValue.firstName}`; this.lastName = `${newValue.lastName}`; }, },}methods: {handleChangeFirst() {this.setterGetter = { firstName: "lewyon", lastName: "布欧" };},},
get属性可以获取最原始的依赖值并处理,
set方法,可以获取修改后的依赖值,在修改之后一并展示到页面上或者进行其他业务需要的处理
computed方法的基础,包括进阶的操作,以及setter和getter方法如上
使用建议:
作为经常使用的方法:
computed可以作为依赖于其他状态的缓存进行使用,包括一些不经常更新的内容,减少开销
简单的字符串模板结合其他状态
还有其他的场景在开发中,我们都可以进行使用,结合watch等。
以上就是“vue2.x版computed和watch怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341