Vue3 组件及其生命周期
Vue3 组件及其生命周期
每一个 .vue 都可以充当组件来使用 每一个组件都可以复用
组件使用示例
<script setup lang="ts">
import HelloWorld from ./components/HelloWorld.vue
// vue3 setup 语法糖组件无需声明式注册
// components: {
// HelloWorld
// }
</script>
<template>
<div>
<HelloWorld msg="Hello,Vue3"/>
</div>
</template>
组件的生命周期
vue2 组件的生命周期
Vue3 钩子函数
beforeCreate -> 使用 setup()
created -> 使用 setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
errorCaptured -> onErrorCaptured
<script setup lang="ts">
import HelloWorld from ./components/HelloWorld.vue
import {
ref} from "vue";
let flag = ref<boolean>(true)
const unmountHelloWorld = () => {
flag.value = !flag.value
}
</script>
<template>
<div>
<HelloWorld msg="Hello,Vue3" v-if="flag"/>
</div>
<div>
<button @click="unmountHelloWorld">改变组件状态</button>
</div>
</template>
<script setup lang="ts">
import {
ref } from vue
import {
onBeforeMount, onBeforeUnmount, onBeforeUpdate,
onMounted, onUnmounted, onUpdated} from "vue";
defineProps<{
msg: string }>()
let count = ref(0)
console.log("setup-----")
// 组件挂载之前(dom没有渲染完成,无法获取)
onBeforeMount(() => {
console.log("组件挂载之前执行 ===> onBeforeMount")
let hello = document.querySelector("#hello")
console.log("无法获取dom ===> ",hello)
})
onMounted(() => {
console.log("组件挂载完毕 ===> onMounted")
let hello = document.querySelector("#hello")
console.log("可以获取dom ===> ",hello)
})
// 依赖于组件内响应式数据的变化
onBeforeUpdate(() => {
console.log("组件更新之前 ===> onBeforeUpdate")
console.log(count.value)
})
onUpdated(() => {
console.log("组件更新完毕 ===> onUpdated")
console.log(count.value)
})
onBeforeUnmount(() => {
console.log("组件卸载之前 ===> onBeforeUnmount")
})
onUnmounted(() => {
console.log("组件卸载完毕 ===> onUnmount")
})
</script>
<template>
<h1>{
{ msg }}</h1>
<div id="hello">
<div>
<button @click="count--">-</button>
<span>{
{ count }}</span>
<button @click="count++">+</button>
</div>
</div>
</template>
组件实操以及认识 less和scoped
认识 Less
什么是less
Less (Leaner Style Sheets) 是一门向后兼容的 CSS 扩展语言
在 vite 中使用 less
1.安装
npm install less-loader -D
2.使用(在style标签内注明 lang=“less” 即可)
<style lang="less"> </style>
认识 scoped
什么是 scoped
实现组件的私有化,当前 style 属性 只属于当前模块
