vue2.x版computed和watch的使用详解

目录
  • 前言
  • 基础使用
  • 使用其他组件状态
  • getter VS setter

前言

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

到此这篇关于vue2.x版computed和watch的使用详解的文章就介绍到这了,更多相关vue computed和watch内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue中watch和computed的区别与使用方法

    computed 计算属性说明: computed 是基于响应性依赖来进行缓存的.只有依赖数据发生改变,才会重新进行计算(当触发重新渲染,若依赖数据没有改变,则 computed 不会重新计算).若没改变,计算属性会立即返回之前缓存的计算结果. 不支持异步,当 computed 内有异步操作时无效,无法监听数据的变化的值. computed 中的成员可以只定义一个函数作为只读属性, 也可以定义成 get/set 变成可读写属性 如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对

  • 详解Vue中的watch和computed

    前言 对于使用Vue的前端而言,watch.computed和methods三个属性相信是不陌生的,是日常开发中经常使用的属性.但是对于它们的区别及使用场景,又是否清楚,本文我将跟大家一起通过源码来分析这三者的背后实现原理,更进一步地理解它们所代表的含义. 在继续阅读本文之前,希望你已经具备了一定的Vue使用经验,如果想学习Vue相关知识,请移步至官网. Watch 我们先来找到watch的初始化的代码,/src/core/instance/state.js export function in

  • Vue中computed计算属性和data数据获取方式

    目录 computed计算属性和data数据获取 解决方法一 解决方法二 computed计算属性取对象的值,第一次报错undefined 报错和打印值 解决方案 computed计算属性和data数据获取 获取到数据(对象.数组),截取一部分显示到页面中,用computed计算属性来实现截取数据然后直接输出到页面. <div class="detailBox"> <h1 class="detailHead">{{ActiveData.tit

  • 如何理解Vue中computed和watch的区别

    概述 我们在 Vue 项目中多多少少都会有用到 computed 和 watch,这两个看似都能实现对数据的监听,但还是有区别.所以以下通过一个小栗子来理解一下这两者的区别. computed 计算属性 计算属性基于 data 中声明过或者父组件传递的 props 中的数据通过计算得到的一个新值,这个新值只会根据已知值的变化而变化,简言之:这个属性依赖其他属性,由其他属性计算而来的. <p>姓名:{{ fullName }}</p> ... ... data: { firstNam

  • Vue+TypeScript中处理computed方式

    目录 什么是 「computed」 「computed」 的用途 在TypeScript怎么用 另一种方案 vue computed正确使用方式 computed or methods computed or watch 什么是 「computed」 「computed」 是Vue中提供的一个计算属性.它被混入到Vue实例中,所有的getter和setter的this上下文自动的绑定为Vue实例.计算属性的结果会被缓存,除非依赖的响应式property变化才会从新计算. 「computed」 的

  • Vue中computed和watch有哪些区别

    计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数据的变化 computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值 如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对一或者一对一,一般用computed 如果computed属性属性值是函数,那么默认会走get方法:函数的返回值就是属性的属性

  • vue3的ref,computed,reactive和toRefs你都了解吗

    目录 1.ref 2.computed 3.reactive 4.toRefs 总结 在vue2中,data函数里返回的值直接为响应式的,但在vue3中我们需要使用一些函数才能达到这个效果. setup函数中拿不到vue的this 1.ref 本质为一个函数,输入参数为一个值(原始类型),返回响应式的对象 2.computed 本质为一个函数,输入参数是一个函数,可以将我们需要的值作为输入函数的返回值 例子:实现点击按钮,屏幕上的数加1 <template> <div id='app'&

  • Vue中的computed属性详解

    目录 插值表达式 methods computed 总结 今天来说说vue中的计算属性computed,为了更好的理解计算属性的好处,我们先通过一个案例来慢慢 了解计算属性,有如下案例:定义两个输入框以及一个span标签,span标签中的内容为两个输入框中的值,span标签中的内容随着输入框中的内容变化而变化 插值表达式 我们先用插值表达式的方法来实现这一效果 <body> <div id="app"> 姓: <input type="text&

  • 详解Vue中Computed与watch的用法与区别

    目录 computed computed只接收一个getter函数 computed同时接收getter函数对象和setter函数对象 调试 Computed watchEffect 立即执行 监听基本数据类型 停止watchEffect 清理watchEffect watchPostEffect 和 watchSyncEffect watchEffect不能监听对象 watch 监听单个数据 监听多个数据(传入数组) 官方文档总结 computed watchEffect watch comp

  • Vue3中的 computed,watch,watchEffect的使用方法

    目录 一.computed 二.watch vu2 的写法 Vue3 中这样写 三.watchEffect 一.computed <template> 姓:<input v-model="person.firstName"><br/><br/> 名:<input v-model="person.lastName"><br/><br/> <span>全名:{{person.

随机推荐