• vue2.x版本中computed和watch的使用入门详解-computed篇


    前言

    在基于vue框架的前端项目开发过程中,只要涉及到稍微复杂一点的业务,我们都会用到computed计算属性这个钩子函数,可以用于一些状态的结合处理和缓存的操作。

    基础使用

    在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等。

    关于vue和watch的区别,以及watch的使用详解,在个人的博客中持续更新中。以上例子的源码中已开源,后续关于vue的笔记也会继续更新

    文章个人博客地址:vue2.x版本中computed和watch的使用入门详解-computed篇

    欢迎关注公众号:程序猿布欧,不定期更新一些文章

    创作不易,转载请注明出处和作者。

  • 相关阅读:
    实现自动化获取1688商品详情数据接口经验分享
    代码随想录——字符串篇
    Spark SQL简介
    GLIP,FLIP论文阅读
    浅谈RPC
    车间工厂看板还搞不定,数据可视化包教包会
    从MBD到MBE的战略转型路径
    Linux-安装jenkins
    Redis新篇一:认识Redis
    汽车标定技术(九)--标定常量与#pragma的趣事
  • 原文地址:https://www.cnblogs.com/akari16/p/16042955.html