#6.2 监听引用数据类型单一数据源<script setup>import {reactive, ref, watch} from 'vue'let user = reactive({name:'张三',age:14}) //监听器watch(()=>user.name,(newVal,oldVal)=>{console.log('对象user中的name属性发生了变化..',newVal);})</script>
#6.3 监听引用数据类型 多数据源[深度监听]<template><div><button @click="addNum()"> 添加随机数</button><div v-for="item in nums" :key="item">{{ item }}</div></div></template><script setup>import { reactive, ref, watch } from 'vue'let nums = reactive([]);//添加随机数const addNum = () => {let num = Math.ceil(Math.random() * 100);nums.push(num);}//监听数组变化-深度监听watch(()=>nums,(newVal,oldVal)=>{console.log('nums数组发生了变化..',newVal);},{deep:true})</script>
#7.生命周期
vue3.0
vue3.2
备注
beforeCreate
setup
组件创建之前 可以获取顶级实例对象
created
setup
组件创建完成,可以获取变量
beforeMount
onBeforeMount
挂载前,VNdom创建完成,真实dom未渲染
mounted
onMounted
挂载完成,真实dom创建完成,可以获取dom
beforeUpdate
onBeforeUpdate
dom更新前触发
updated
onUpdated
dom更新完成触发
beforedestroy,destroyed
beforeUnmount
onBeforeUnmount
组件卸载后触发 所有的挂载的数据 子组件全部卸载后触发
errorCaptured
onErrorCaptured
在捕获一个来自后代组件的错误时被调用
renderTracked
onRenderTracked
跟踪虚拟 DOM 重新渲染时调用
renderTriggered
onRenderTriggered
当虚拟 DOM 重新渲染被触发时调用
activated
activated
onActivated
缓存组件激活时调用
deactivated
deactivated
onDeactivated
缓存组件失活时调用
<template><div><div class="box"></div></div></template><script setup>import { onMounted } from 'vue';//生命周期钩子监听onMounted(()=>{console.log(document.querySelector('.box')); //可以获取dom})</script>
#8.组件使用- 创建 src/components/Son.vue
- App.vue中导入并使用该组件
- vue3.2 中当我们导入子组件时,setup语法糖会自动去注册该组件,所以注册语句不用写了 。
<template><div><son></son></div><script setup>import Son from './components/Son.vue'</script>
#9.组件通信#9.1 父传子 defineProps- 父组件
<template><div><Son class="box" title="我是父组件传递的标题" :likes="likes"></Son></div></template><script setup>import Son from './components/Son.vue'let likes = ['张三','李四']</script>
- 子组件
<script setup>const props=defineProps({title:{type:String,default:''},likes:{type:Array,default:()=>[]}})</script>
#9.2 子传父 defineEmits- 子组件
<template><div><button @click="sendData">传递数据</button></div></template><script setup>//定义自定义事件const emit = defineEmits(['send'])//自己的事件执行函数const sendData = https://www.isolves.com/it/cxkf/qd/2022-08-09/() => {//执行自定义事件emit('send', '我是儿子组件传递的数据')}
- 父组件
<template><div><Son class="box"@send="getData" ></Son></div></template><script setup>import Son from './components/Son.vue'//触发自定义事件-接收数据const getData = https://www.isolves.com/it/cxkf/qd/2022-08-09/(data)=>{console.log(data);}
【Vue3.2 语法基础详解】
推荐阅读
- 无基础唱歌技巧和发声方式教学 学习唱歌的方法
- 正常排卵基础体温图
- 基础体温是多少
- iPhone|iPhone 14系列新品展望:基础款还是老样子 苹果挤牙膏
- 初中英语十大语法速记口诀 初中英语语法口诀
- 运动|两个动作让你悄悄瘦下来,零基础也能练!
- c语言基础学习(零基础如何系统的学好)
- 电子基础知识(快速入门电子电路的干货!)
- 一般将来时讲解(给孩子深度讲解语法,彻底弄明白)
- 很实用的机械设计基础教程 机械设计基础精品课程