VUE3-计算属性和监听器《五》

 目录

一,计算属性

二,监听器


在vue3种,当界面上需要处理一些数据的时候,可以通过计算属性和监听器处理,他们都是对一个属性进行操作的,然后返回数据。

他们的区别是,计算属性,是通过一开始的初始值进行计算,或者调用某一个方法后,进行计算返回的值,而监听器,是根据界面的数据的变化而变化的时候,进行监听后计算返回的值。

一,计算属性

1.建立一个正常运行的程序,然后把下面的代码复制进去

<template>
	<div>
		<h1>{{a}}</h1>
		<h1>{{b}}</h1>
		<h1>{{a}}{{b}}</h1>
		<h2>{{c}}</h2>
	</div>

</template>

<script lang="ts" setup>
	import {
		computed
	} from 'vue';

	const a = '123';
	const b = '456';
	//computed  有些值需要通过计算得到
	const c = computed(() => {
		return a + b
	})
	// watch()
</script>

<style scoped>

</style>

2.效果

我们要实现的效果就是,把a和b的值进行相加计算,然后显示,不过也可以使用插值的方法实现。

3.拓展

第二步说了,可以使用插值的方法实现,但是当值需要计算的时候,有大量的逻辑判断,那么插值方法太复杂了,所以必须使用计算属性进行计算

当我们把a的值的长度改成3时,效果如图所示

当我们把a的值的长度改成大于3时,效果如图所示

代码

<template>
	<div>
		<h1>{{a}}</h1>
		<h1>{{b}}</h1>
		<h1>{{a}}{{b}}</h1>
		<h2>{{c}}</h2>
	</div>

</template>

<script lang="ts" setup>
	import {
		computed
	} from 'vue';

	// const a = '123';
	const a = '1234';
	const b = '456';
	//computed  有些值需要通过计算得到
	const c = computed(() => {
		if (a.length == 3) {
			return a + b + "长度是3"
		} else {
			return a + b + "长度不是3"
		}
	})
	// watch()
</script>

<style scoped>

</style>

二,监听器

1.建立一个正常运行的程序,然后把下面的代码复制进去

当我们输入数据的时候,监听器根据a的值的变化,然后打印日志

<template>
	<input v-model="a" />
</template>

<script lang="ts" setup>
	import {
		watch,
		ref
	} from 'vue';
	const a = ref('')

	//a是监听变量的值,cc是变化后的值
	watch(a, (cc) => {
		console.log(`1个参数:a is ${cc}`)
	})
</script>

<style scoped>

</style>

2.效果

打开浏览器,按F12,然后看控制台的输出数据

每输入一个数字,就会自动打印出日志,就是对a进行监听了,当a变化的时候就打印日志

3.拓展

当方法中,有2个参数的时候

代码:

<template>
	<input v-model="a" />
</template>

<script lang="ts" setup>
	import {
		watch,
		ref
	} from 'vue';
	const a = ref('')

	//a是监听变量的值,cc是变化后的值
	// watch(a, (cc) => {
	// 	console.log(`1个参数:a is ${cc}`)
	// })
	
	//a是监听变量的值,bb是变化前的值,aa是变化后的值
	watch(a, (aa, bb) => {
		console.log(`2个参数:a is ${bb}`)
		console.log(`2个参数:a is ${aa}`)
	})
</script>

<style scoped>

</style>

效果: 

第二个参数bb是变化前的值,第一个参数aa是变化后的值

拓展:

计算属性:多个值的变化,为了得到一个结果,使用计算属性,通过计算得到一个值的结果。

监听器:一个值的变化,会影响多个值(或者处理多个事件),为了观察一个值的变化。

大部分场景使用计算属性,计算属性的性能比监听器的性能高。

<template>
	<input v-model="vaule2.name" />
	<input v-model="data1" />
	<button @click="aa">2332</button>
</template>

<script lang="ts" setup>
	import {
		watch,
		reactive,
		ref
	} from 'vue';

	let vaule2 = reactive({
		name: "212",
		age: 20
	})
	const aa = (() => {
		data1.value.push(6)
	})

	// 监听对象
	watch(() => vaule2.name, (newValue, valuOld) => {
		console.log(`对象参数:${newValue}`)
	})
	//监听数组
	let data1 = ref([1, 2, 3])
	watch(data1.value, (newValue, valueOld) => {
		console.log(`数组参数: ${newValue}`)
	})

	watch([data1.value, () => vaule2.name], (newValue, valueOld) => {
		console.log(`多值参数: ${newValue}`)
	})
</script>

<style scoped>

</style>

来源:VUE3-计算属性和监听器《五》_监听计算属性-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue中的计算属性监听器都是用于响应式数据更新时进行一些操作的。 计算属性是一种基于响应式依赖进行缓存的属性。它的值是根据它的依赖项动态计算而来的。当依赖项发生变化时,计算属性会自动重新计算,并且只有在必要时才会重新求值。计算属性适用于需要进行复杂计算的情况,比如对数据进行筛选、排序等操作。 监听器是一种观察和响应 Vue 实例上数据变动的方法。它可以监听一个或多个数据的变化,并在数据变化时执行相应的回调函数。监听器适用于需要执行一些副作用的情况,比如异步操作、事件触发等。 下面是计算属性监听器的使用示例: ```html <template> <div> <p>计算属性:{{ fullName }}</p> <p>监听器:{{ message }}</p> <input v-model="firstName" placeholder="请输入姓氏"> <input v-model="lastName" placeholder="请输入名字"> <button @click="updateMessage">更新消息</button> </div> </template> <script> export default { data() { return { firstName: '', lastName: '', message: '', }; }, computed: { fullName() { return this.firstName + ' ' + this.lastName; }, }, watch: { message(newValue, oldValue) { console.log(`消息从"${oldValue}"更新为"${newValue}"`); }, }, methods: { updateMessage() { this.message = 'Hello, ' + this.fullName; }, }, }; </script> ``` 在上面的示例中,我们定义了一个计算属性 `fullName` 和一个监听器 `message`。当用户输入姓氏和名字时,`fullName` 会自动更新;当用户点击“更新消息”按钮时,`message` 会更新。在 `message` 更新时,监听器会执行相应的回调函数并输出更新前后的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故里2130

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值