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)
  }

 

posted @ 2022-09-10 21:32  凯宾斯基  阅读(108)  评论(0)    收藏  举报