Vue3 学习2

Vue3核心语法

watchEffect

  • 官网:立即运行一个函数,同时响应式地追踪其依赖,并在依赖更改时重新执行该函数。

  • watch对比watcheffect

    1.都能监听响应式数据地变化,不同的是监听数据变化的方式不同

    2.watch:要明确指出监视的数据

    3.watchEffect:不用明确指出监视的数据(函数中用到哪些属性,那就监视哪些属性)

    复制代码
      <template>
      	<div class="person">
      	<h2>需求:当水温达到60度,或水位达到80cm时,给服务器发请求	</h2>
      	<h2>当前水温:{{ temp }}℃</h2>
      	<h2>当前水位:{{ height }}cm</h2>
      	<button @click="changeTemp">水温+10</button>
      	<button @click="changeHeight">水位+10</button>
      	</div>
      </template>
    
      <script lang="ts" setup name="Person">
      	import {ref,watch, watchEffect}from 'vue'
      	//数据
      	let temp= ref(10)
      	let height = ref(0)
      	//方法
      	function changeTemp(){
      		temp.value +=10
      	}
      	function changeHeight(){
      		height.value +=10
      	}
    
      	//监视
      	 /* watch([temp,height],(value)=>{
      		//console.log(newValue,oldValue);
      		//从value中获取最新的水温(newTemp)、水位(newHeight)
      		let[newTemp,newHeight] = value
      	//逻辑
      	if(newTemp >=60 || newHeight >=80){
    		console.log('给服务器发请求');
      	}
      }) */
    
       //监视 watchEffect实现
      	watchEffect(()=>{
      		if(temp.value >=60 || temp.value >=80){
      		console.log('给服务器发请求');
      		}
      	})
      </script>

标签的ref属性

作用:用于注册模板引用

  • 用在普通DOM标签上,获取的是DOM节点。
  • 用在组件标签上,获取的是组件实例对象。

TS中的_接口_泛型_自定义

复制代码
	<template>
		<div class="person">
			???
		</div>
	</template>

	<script lang="ts" setup name="Person">
		import{type personInter,type Persons} from '@/types'
		//let person:personInter = {id:'asjcnjjanjb',name:'张三',age:60}

		let personList:Persons = [
			{id:'asjcnjjanjb',name:'张三',age:60},
			{id:'asjcnjjanjb',name:'李四',age:18},
			{id:'asjcnjjanjb',name:'王五',age:6}
		]
	</script>

props的使用

!!!重点理解

生命周期

组件的生命周期:

创建(created):创建前(beforeCreate),创建完毕

挂载(mounted):挂载前,挂载完毕

更新:更新前,更新完毕

销毁:销毁前,销毁完毕

生命周期、生命周期函数、生命周期钩子

复制代码
<script>

	export default {
	/* eslint-disable */
		name: 'Person',
	//数据
	data(){
	 return{
  		sum:1
	}
},
	//方法
	methods:{
		add(){
  		this.sum +=1
	}
},
 //创建前的钩子
	beforeCreate(){
	 console.log('创建前');

	},
//创建完毕的钩子
	created(){
		console.log('创建完毕');
	},
//挂载前
	beforeMount(){
		console.log('挂载前');
	},
//挂载完毕
	mounted(){
		console.log('挂载完毕');
	},
//更新前
	beforeUpdate(){
		console.log('更新前');
	},
//更新完毕
	updated(){
		console.log('更新完毕');
	},
//销毁前
	beforeDestroy(){
		console.log('销毁前');
	},
//销毁完毕
	destroyed(){
		console.log('销毁完毕');
	}
}

</script>
  • 概念:vue组件实例在创建时要经历一系列初始化步骤,在此过程中vue会在合适的时机,调用特定的函数,从而让开发者有机会在特定阶段运行自己的代码,这些特定的函数统称为:生命周期钩子

  • 规律:创建、挂载、更新、销毁每个阶段有两个钩子,一前一后

  • vue2的生命周期

  • vue3的生命周期:

    复制代码
      <script lang="ts" setup name="Person">
      	import {ref,onBeforeMount,onMounted, onUpdated,onBeforeUpdate,onBeforeUnmount,onUnmounted} from 'vue'
    
         //数据
      	let sum = ref(0)
      	//方法
      	function add(){
      		sum.value +=1
      	}
      	//创建
      	console.log('创建');
    
      	 //挂载前
      	onBeforeMount(()=>{
      		console.log('挂在载前');
      	})
      	//挂载完毕
      	onMounted(()=>{
      		console.log('子--挂载完毕');
      	})
       //更新前
      	onBeforeUpdate(()=>{
      		console.log('更新前');
      	})
      //更新完毕
      	onUpdated(()=>{
      		console.log('更新完毕');
      	})
      //卸载前
      	onBeforeUnmount(()=>{
      		console.log('卸载前');
      	})
      //卸载完毕
      	onUnmounted(()=>{
      		console.log('卸载完毕');
      	})
      </script>

Hooks



相关推荐
奔跑的web.1 天前
TypeScript 装饰器入门核心用法
前端·javascript·vue.js·typescript
阿蒙Amon1 天前
TypeScript学习-第1章:入门
javascript·学习·typescript
winfredzhang1 天前
实战复盘:如何用 HTML+JS+AI 打造一款“影迹”智能影视管理系统
javascript·html·json·加载·搜索·保存·电影接口
集成显卡1 天前
Lucide Icons:一套现代、轻量且可定制的 SVG 图标库
前端·ui·图标库·lucide
pas1361 天前
37-mini-vue 解析插值
前端·javascript·vue.js
十里-1 天前
vue.js 2前端开发的项目通过electron打包成exe
前端·vue.js·electron
雨季6661 天前
构建 OpenHarmony 简易文字行数统计器:用字符串分割实现纯文本结构感知
开发语言·前端·javascript·flutter·ui·dart
雨季6661 天前
Flutter 三端应用实战:OpenHarmony 简易倒序文本查看器开发指南
开发语言·javascript·flutter·ui
小北方城市网1 天前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
console.log('npc')1 天前
vue2 使用高德接口查询天气
前端·vue.js