2025-5-26Vue3快速上手

发布于:2025-05-27 ⋅ 阅读:(29) ⋅ 点赞:(0)

1、Vue3的生命周期

创建=》挂载前=》挂载完毕=》更新前=》更新完毕=》卸载前=》卸载完毕

Vue2和Vue3生命周期对比

父组件与子组件的生命周期关系

父组件会先于子组件创建,等子组件挂载完毕,父组件才挂载完毕,子组件的更新不会引起父组件的更新,但是子组件的卸载和重新创建会引起父组件的更新

2.自定义Hooks

​Hooks(组合式函数)​​ 的核心优势之一就是 ​​将相关的数据、方法、逻辑整合在一起​​,使代码更加模块化、可维护和可复用。

在src下新建一个hooks文件夹,

hooks的文件命名规则为 useXxx,

<template>
  <div>
    <h2>当前求和为:{{ sum }} 放大10倍后:{{bigSum  }}</h2>
    <button @click="changeSum">求和加1</button>
    <br>
    <img v-for="(item,index) in dogList" :key="index" :src="item" alt="">
    <br>
    <button @click="addDog">点我再来一只小狗</button>
  </div>
</template>

<script lang="ts">
 export default {
  name:'Person234'
 }
</script>


<script lang="ts" setup >
import useDog from '../hooks/useDog';
import useSum from '../hooks/useSum';

const {sum,changeSum,bigSum} =useSum()
const {dogList,addDog} = useDog()


</script>

<style scope>
img{
  height: 100px;
  margin:10px;
}

</style>

useDog.ts:

import {ref,reactive} from 'vue'
import axios from 'axios';

export default function(){
//数据
const dogList = reactive([
  "https://images.dog.ceo/breeds/pembroke/n02113023_5310.jpg"
])
//方法
const  addDog = async ()=>{
  try {
    let result = await axios.get('https://dog.ceo/api/breed/pembroke/images/random')
    dogList.push(result.data.message)
  } catch (error) {
    alert('请求错误')
  }
}
return {dogList,addDog}

}

useSum.ts:

import {ref,reactive,computed} from 'vue'


export default function(){
//数据
const sum = ref(0)
const bigSum = computed(()=>{
    return sum.value*10
})
//方法
const changeSum = ()=>{
  sum.value += 1
}
//将数据、方法等送出去
return {sum,changeSum,bigSum}
}



网站公告

今日签到

点亮在社区的每一天
去签到