vue3--学习技术胖笔记----第二波 生命周期和钩子函数
https://www.bilibili.com/video/BV1L5411j7vj?p=7&spm_id_from=pageDriver&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea
<template>
<div>
<a href="https://vitejs.dev" target="_blank"></a>
<H2>欢迎光临红浪漫洗浴中心</H2>
<div>请选择一位美女</div>
<button
v-for="(item,index) in girls"
v-bind:key="index"
@click="selectGirlFun(index)"
>
{{index}}:{{item}}
</button>
<div>你选择了【{{selectGirl}}】为你服务</div>
</div>
</template>
<script lang="ts">
import {
reactive,
toRefs,
onBeforeMount,
onMounted,
onBeforeUpdate,
onUpdated,
} from "vue";
// 接口定义下面各种类型 (规范,不写页面也可以运行,因为没有申明类型ts会默认类型推断)
interface DataProps{
girls: string[];
selectGirl: string;
selectGirlFun:(index:number)=>void
}
export default({
name:"APP",
setup(){
console.log("1-开始创建组件-------setup()")
const data=reactive({
girls:["大脚","刘颖","小红"],
selectGirl:"",
selectGirlFun :(index:number)=>{
data.selectGirl=data.girls[index];
}
});
onBeforeMount(()=>{
console.log("2-组件挂载到页面之前执行---onBeforeMount()")
}
)
onMounted(()=>{
console.log("3-组件挂到页面之后执行----onMounted()")
})
onBeforeUpdate(()=>{
console.log("4-组件更新(即页面有变化)之前执行----onBeforeUpdate()")
})
onUpdated(()=>{
console.log("5-组件更新(即页面有变化)之后执行----onUpdated()")
})
//使用toRefs 让变量和 方法可以在模版直接调用
const refData=toRefs(data)
return{
...refData,
}
},
// vue2的钩子生命周期函数也可以用,写在setuP()方法后面,
//vue3的钩子函数比vue的先执行,一般不要混着用 代码不优雅
beforeCreate(){
console.log("1.1-组件创建之前*************beforeCreate()");
},
beforeMount(){
console.log("2.1-组件挂载到页面之前执行*************beforeMount()");
},
mounted(){
console.log("3.1-组件挂载到页面之后执行**********mounted()")
},
beforeUpdate(){
console.log("4.1-组件更新之前执行**********beforeUpdate()")
},
updated(){
console.log("5.1-组件更新之后执行----updated()")
}
});
</script>
<style scoped>
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
filter: drop-shadow(0 0 2em #42b883aa);
}
</style>
//生命周期
// 钩子函数
//steup() --等于vue2 的beforeCreate 和 created
调试用的钩子函数
import {
// 调试用钩子函数
// 跟踪所有值的状态
onRenderTracked,
// 跟踪某个值的状态
onRenderTriggered,
} from "vue";
// //这个是所有的
// onRenderTracked((event)=>{
// console.log("状态跟踪钩子函数***********")
// })
// 这个是精准的,只有把变的打印出来
onRenderTriggered((evennt)=>{
console.log("状态跟踪钩子函数***********")
console.log(evennt)
}