首页 > 其他分享 >Vue3 watchEffect函数

Vue3 watchEffect函数

时间:2023-04-19 22:36:39浏览次数:46  
标签:vue const 函数 person sum watchEffect Vue3 App

视频

3.watchEffect函数

  • watch的套路是:既要指明监视的属性,也要指明监视的回调。

  • watchEffect的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。

  • watchEffect有点像computed:

    • 但computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值。
    • 而watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值。
    //watchEffect所指定的回调中用到的数据只要发生变化,则直接重新执行回调。
    watchEffect(()=>{
        const x1 = sum.value
        const x2 = person.age
        console.log('watchEffect配置的回调执行了')
    })
    

components

Demo.vue

<template>
	<h2>当前求和为:{{sum}}</h2>
	<button @click="sum++">点我+1</button>
	<hr>
	<h2>当前的信息为:{{msg}}</h2>
	<button @click="msg+='!'">修改信息</button>
	<hr>
	<h2>姓名:{{person.name}}</h2>
	<h2>年龄:{{person.age}}</h2>
	<h2>薪资:{{person.job.j1.salary}}K</h2>
	<button @click="person.name+='~'">修改姓名</button>
	<button @click="person.age++">增长年龄</button>
	<button @click="person.job.j1.salary++">涨薪</button>
</template>

<script>
	import {ref,reactive,watch,watchEffect} from 'vue'
	export default {
		name: 'Demo',
		setup(){
			//数据
			let sum = ref(0)
			let msg = ref('你好啊')
			let person = reactive({
				name:'张三',
				age:18,
				job:{
					j1:{
						salary:20
					}
				}
			})

			//监视
			/* watch(sum,(newValue,oldValue)=>{
				console.log('sum的值变化了',newValue,oldValue)
			},{immediate:true}) */

			watchEffect(()=>{
				const x1 = sum.value
				const x2 = person.job.j1.salary
				console.log('watchEffect所指定的回调执行了')
			})

			//返回一个对象(常用)
			return {
				sum,
				msg,
				person
			}
		}
	}
</script>


App.vue

<template>
	<Demo/>
</template>

<script>
	import Demo from './components/Demo'
	export default {
		name: 'App',
		components:{Demo},
	}
</script>


main.js

//引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'

//创建应用实例对象——app(类似于之前Vue2中的vm,但app比vm更“轻”)
const app = createApp(App)

//挂载
app.mount('#app')

标签:vue,const,函数,person,sum,watchEffect,Vue3,App
From: https://www.cnblogs.com/chuixulvcao/p/17334880.html

相关文章

  • Vue3 watch时value的问题
    视频componentsDemo.vue<template> <h2>当前求和为:{{sum}}</h2> <button@click="sum++">点我+1</button> <hr> <h2>当前的信息为:{{msg}}</h2> <button@click="msg+='!'">修改信息</button&g......
  • vue3学习之tabler组件Layout布局
    上一篇使用的bootstrap-vue-next项目迭代很快,考虑还未发文档和正式版本(自己菜)改用原生bootstrap模板tabler项目。tabler安装运行不想安装可直接打开tabler\demo目录下html文件浏览查看效果#获取后目录下运行npminstall#需要先安装https://github.com/oneclick/rubyinst......
  • Vue3 watch监视数据
    watch监视ref定义的数据视频watch监视reactive定义的数据视频2.watch函数与Vue2.x中watch配置功能一致两个小“坑”:监视reactive定义的响应式数据时:oldValue无法正确获取、强制开启了深度监视(deep配置失效)。监视reactive定义的响应式数据中某个属性时:deep配置有效。/......
  • 面积计算器(函数重载)
    一.问题描述:实现一个计算器,能够计算矩形或长方形的面积;二.编程思路:1.定义area函数2.定义主函数3.设立for循环4.设定if选择结构三.代码实现:#include<iostream>#include<string>usingnamespacestd;intarea(int,int);intarea(int,int,int);intmain(){inti,......
  • 第六天练习(学习PTA题目的标准答案以及复习string函数知识)
    #include<iostream>#include<string>usingnamespacestd;boolcheck(strings){intp_pos=-1,t_pos=-1;intp_count=0,t_count=0;for(inti=0;i<s.size();i++){if(s[i]=='P'){i......
  • 源码共读|vue2 工具函数
    前言本期源码共读的课程是学习vue2中的工具函数,学习优秀开源项目的代码的写作思路,看看他们在书写代码中都会考虑到那些问题。资源:源码位置:vue/util.tsatmain·vuejs/vue(github.com)学习目标分析源码学习源码中优秀代码和思想分析源码代码使用Typescript编写,......
  • 函数和方法的迪米特法则
    有一个方法M,它存在于对象O中。对象O的M方法只引用下面几种对象的方法:1)对象O的其它方法2)M的参数3)在M方法中被实例化的对象4)O所包含的子对象5)任何O可以访问的全局变量。  ......
  • 函数
    函数的结构def函数名(参数):“函数注释”函数代码return返回值介绍def定义函数的关键字函数名跟变量名一样参数可有可无,有参数的时候要传参才能调用没有的话就不用传参调用函数注释说明这个函数的作用(想要的就要)函数体代码是函数的核心需要程序员的编写return使用......
  • 查看torch中的所有函数、方法名
    查看torch中的所有函数、方法名运行程序,就可以看到所有的函数、方法importtorchs=dir(torch)foriins:print(i)输出有一千多个结果AVGAggregationTypeAnyTypeArgumentArgumentSpecBFloat16StorageBFloat16TensorBenchmarkConfigBenchmarkExecutionSta......
  • 类中自定义函数并调用and使用钩子函数打印类中变量
    在一个类中自定义一个函数A,并在前向传播函数forword中调用这个函数假设您正在编写一个PyTorch模型,您可以按照以下方式在类中定义函数A,并在forward函数中调用它:importtorchimporttorch.nnasnnclassMyModel(nn.Module):def__init__(self):super(MyMod......