返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue2.x版详解computed和watch的使用
  • 813
分享到

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

2024-04-02 19:04:59 813人浏览 八月长安
摘要

目录前言一、computed基础使用使用其他组件状态getter VS setter二、watch基本使用immediate和deep实例前言 在基于Vue框架的前端项目开发过程中,

前言

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

一、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等。

二、watch基本使用

watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等

在使用watch的时候,需要在data中生命一个状态,并添加到watch当中进行观察,当发生变化时,watch可以通过默认参数获取最新的值的变化

<li>name值:{{ name }}</li>
<li>{{ nameTip }}</li>
<li>通过异步操作获取的age:{{ age }}</li>
<li><button @click="getUser">修改名字</button></li>
let p1 = new Promise((resolve, reject) => {
	resolve({ age: "14" });
});
data() {
	return {
		name: "zhangsan",
		nameTip: "name未改变",
	};
},
watch: {
	name(newVal, oldVal) {
		// watch可以监听一些状态发生更改的时候,做一些处理,修改状态,或者异步操作
		this.nameTip = "name状态改变了";
		this.getData();
	},
},
methods: {
	getData() {
		setTimeout(() => {
			this.getAge();
		}, 1000);
	},
	getUser() {
		this.name = "lisi";
	},
	getAge() {
		p1.then((res) => {
			console.log(res);
			this.age = res.age;
		});
	},
},

当点击修改的时候,name的值会被修改为lisi,watch监听到name的修改之后,可以修改nameTip的文字,进行出发修改别的状态,
我们也可以通过newVal获取name的最新的值,或者oldVal的值进行一些对比和操作

使用promise和定时器模拟当状态变化的时候,请求后台数据并渲染,这是我们在开发过程中,对watch使用的一个比较典型的例子

immediate和deep

immediate:当watch第一次加载或者首次绑定的时候,需要监听和获取data中的状态,那么就可以使用immediate,设置为true,该属性值为布尔值

deep:watch监听的值为对象的时候,可以使用该属性进行监听对象深层次的属性变化,

注意事项:

deep默认是false,使用的时候,需要自行添加deep:true ,deep和immediate的值一样,是布尔值

实例

<li>{{ immediateNameTip }}</li>
 
data() {
	return {
		immediateName: "immediateName原始值",
		immediateNameTip: "immediateName改变时的提示文字",
	};
},
 
immediateName: {
    handler(newVal, oldVal) {
    	console.log("immediate表示最初监听值得时候,也执行这段代码");
    	setTimeout(() => {
    		this.immediateNameTip =
    			"immediateName添加immediate,初次绑定也会执行";
    	}, 2000);
    },
    immediate: true,
    deep: true, // 只针对对象的深层次属性变化
},

当设置了immediate为true的时候,首次进来immediateNameTip在定时器执行之后,就会发生更改。
deep这里不再举例子,大家可以自己在实战中去使用和学习

使用建议;

watch可以作为监听路由变化,以及通过异步的方式去获取数据,同时在一些开销比较大的状态监听都有较多的应用场景,还有购物车功能的实现等场景。

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

--结束END--

本文标题: vue2.x版详解computed和watch的使用

本文链接: https://lsjlt.com/news/153225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue2.x版详解computed和watch的使用
    目录前言一、computed基础使用使用其他组件状态getter VS setter二、watch基本使用immediate和deep实例前言 在基于vue框架的前端项目开发过程中,...
    99+
    2024-04-02
  • vue2.x版computed和watch怎么使用
    今天小编给大家分享一下vue2.x版computed和watch怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基础使...
    99+
    2023-07-02
  • vue2.x版本中computed和watch怎么使用
    这篇文章主要介绍了vue2.x版本中computed和watch怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue2.x版本中computed和watch怎么使用文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-02
  • vue2.x版本中computed和watch的使用及关联和区别
    目录前言区别补充结语前言 前面篇介绍了computed和watch的基本使用vue2.x版详解computed和watch的使用 两者的区别,继续通过代码实现的方式具体去了解 htm...
    99+
    2024-04-02
  • Vue 中的 computed 和 watch 的区别详解
    目录computed注意应用场景watch总结computed computed 看上去是方法,但是实际上是计算属性,它会根据你所依赖的数据动态显示新的计算结果。计算结果会被缓存,c...
    99+
    2024-04-02
  • vue Watch和Computed的使用总结
    目录01. 监听器watch (1)作用 (2)属性和方法 (3)监听对象 (4)监听数组 02. 计算属性computed (1)计算属性的set方法 (2)区别 (3)使用场景 ...
    99+
    2024-04-02
  • Vue3的Watch和computed怎么使用
    本篇内容介绍了“Vue3的Watch和computed怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • Vue2和Vue3如何使用watch侦听器详解
    watch:侦听数据变化 (某个值的change事件) vue2.x data(){ return{ num:10 } }, watc...
    99+
    2024-04-02
  • vue3中的watch和computed怎么使用
    2.监听 ref 数据2.1监听一个 ref 数据<template> <p>{{ age }}</p> <button @click="age++">click&...
    99+
    2023-05-21
    Vue3 watch computed
  • vue.js中methods watch和computed的区别示例详解
    目录前言介绍一、作用机制上二、从性质上三、watch和computed的对比四、methods不处理数据逻辑关系,只提供可调用的函数五、从功能的互补上看待methods,watch和...
    99+
    2024-04-02
  • 怎么在vue中使用 Watch和Computed
    本篇文章给大家分享的是有关怎么在vue中使用 Watch和Computed,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。01. 监听器watch(1)作用watch:用于监听d...
    99+
    2023-06-15
  • vue中computed和watch的使用实例代码解析
    需求: 1.点击按钮实现天气的切换;2.用watch进行监视天气产生变化的数据; 实现代码(helloworld.vue实现代码): <template> <...
    99+
    2024-04-02
  • 详解Vue中Computed与watch的用法与区别
    目录computedcomputed只接收一个getter函数computed同时接收getter函数对象和setter函数对象调试 ComputedwatchEffect立即执行 ...
    99+
    2024-04-02
  • Vue3中的computed,watch,watchEffect如何使用
    一、computed<template> 姓:<input v-model="person.firstName"><br/><br/> 名:<input v...
    99+
    2023-05-14
    Vue3 watch computed
  • Vue3中的computed,watch,watchEffect怎么使用
    这篇“Vue3中的computed,watch,watchEffect怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-07-06
  • vue3的watch用法以及和vue2中watch的区别
    目录watch介绍Vue2 用法监听基础变量监听对象Vue3的用法监听基础类型监听复杂类型组合监听Vue 2 Vue3 小区别computed和watch的区别总结watch介绍 w...
    99+
    2023-05-16
    vue3的watch Vue2的watch vue2 vue3 watch区别
  • Vue3中的 computed,watch,watchEffect的使用方法
    目录一、computed二、watchvu2 的写法Vue3 中这样写三、watchEffect一、computed <template> 姓:<input ...
    99+
    2024-04-02
  • Vue中Computed和Watch的作用是什么
    本篇文章给大家分享的是有关Vue中Computed和Watch的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 Vue中的...
    99+
    2024-04-02
  • Vue中的computed和watch用法及区别
    目录vue computed 是如何实现的computed demovue的watch是如何实现的watch demovue computed 是如何实现的 Vue 的 comput...
    99+
    2023-05-17
    Vue computed和watch Vue computed Vue watch
  • 如何理解Vue中computed和watch的区别
    目录概述computed 计算属性watch 监听属性总结概述 我们在 Vue 项目中多多少少都会有用到 computed 和 watch,这两个看似都能实现对数据的监听,但还是有区...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作