Vue 3 第十章:组件一(基本概念、生命周期钩子)

Vue3组件学习

1. 基本概念

1.1. 组件的概念和作用

  • Vue中的组件是一种可复用的代码单元,它可以封装HTMLCSSJavaScript代码,使得我们可以更好地组织和管理代码,并且可以提高代码的复用性可维护性

  • 组件可以理解为页面的一部分,它可以接受输入(props)和输出(events),并且可以在组件内部实现自己的逻辑和功能。使用组件可以将一个大型应用程序拆分成多个小型的独立的组件,从而方便管理和维护

  • 在Vue3中,组件有两种实现方式:单文件组件对象式组件。单文件组件是一种将HTMLCSSJavaScript代码封装到一个文件中的方式,它可以更好地组织和管理代码,并且可以使用预编译器和模块化工具。对象式组件是一种使用JavaScript对象来定义组件的方式,它比较简单,但是不够灵活

  • Vue中的组件可以包含以下几个部分:

    • 模板(template):组件的HTML代码,用于渲染组件的内容。
    • 样式(style):组件的CSS代码,用于定义组件的样式。
    • 脚本(script):组件的JavaScript代码,用于实现组件的逻辑和功能。
    • 属性(props):组件接收的输入数据,可以是任何类型的数据。
    • 事件(events):组件触发的输出事件,可以是任何类型的事件。

例子1:单文件组件

单文件组件的文件格式通常是.vue,它包含了三个部分,用<template><style><script>标签分别表示。例如:

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue';

const msg = ref('Welcome to Your Vue.js App');
</script>

<style scoped>
.hello {
  color: red;
}
</style>

例子2:对象组件(下面是一个官方文档的例子)

这里的模板是一个内联的JavaScript字符串,Vue 将会在运行时编译它。你也可以使用 ID 选择器来指向一个元素 (通常是原生的<template>元素),Vue 将会使用其内容作为模板来源。

下面的例子中定义了一个组件,并在一个.js文件里默认导出了它自己,但你也可以通过具名导出在一个文件中导出多个组件。

import { ref } from 'vue'

export default {
  setup() {
    const count = ref(0)
    return { count }
  },
  template: `
    <button @click="count++">
      You clicked me {{ count }} times.
    </button>`
  // 或者 `template: '#my-template-element'`
}

1.2. 组件的分类和使用场景

在Vue中,组件可以按照其作用和复用性的不同分为以下两类:

1.2.1. 基础组件

基础组件是一种通用的、可复用的组件,它具有较高复用性普适性,可以在多个应用程序中被重复使用。基础组件通常包含一些通用的UI元素,例如按钮输入框标签面包屑等。基础组件的特点是可以独立使用不依赖于其他组件,也不依赖于应用程序的业务逻辑

1.2.2. 业务组件

业务组件是一种针对具体业务需求而设计的、具有一定复杂性的组件,它通常包含一些特定的UI元素业务逻辑。业务组件的特点是可以满足具体的业务需求,但是对于其他应用程序可能不适用。业务组件通常依赖于其他组件和应用程序的业务逻辑,需要在特定的业务场景下使用。

1.3. 组件的生命周期钩子函数

概念:简单来说就是一个组件从创建销毁的 过程 称为生命周期

注意:在我们使用 Vue3 组合式API 是没有beforeCreatecreated这两个生命周期的

optionAPIcompositionAPI作用
beforeCreate组件创建之前执行
created组件创建之后执行
beforeMountonBeforeMount组件挂载之前执行
mountedonMounted组件挂载之后执行
beforeUpdateonBeforeUpdate组件更新之前执行
updatedonUpdated组件更新之后执行
beforeUnmountonBeforeUnmount组件卸载之前执行
unmountedonUnmounted组件卸载之后执行
errorCapturedonErrorCaptured在捕获了后代组件传递的错误时调用
renderTrackedonRenderTracked响应式依赖被组件的渲染作用追踪后调用。
仅在开发模式下可用
renderTriggeredonRenderTriggered响应式依赖被组件触发了重新渲染之后调用。
仅在开发模式下可用
activatedonActivated组件实例是<KeepAlive>缓存树的一部分,
当组件被插入到 DOM 中时调用
deactivatedonDeactivated组件实例是<KeepAlive>缓存树的一部分,
当组件从 DOM 中被移除时调用

例子一:optionAPI

<template>
  <div>
    <h1>Hello World!</h1>
  </div>
</template>

<script>
export default {
  beforeCreate() {
    console.log(`组件创建之前-beforeCreate`)
  },
  created() {
    console.log(`组件创建之后-created`)
  },
  beforeMount() {
    console.log(`组件挂载之前-beforeMount`)
  },
  mounted() {
    console.log(`组件挂载之后-mounted`)
  },
  beforeUpdate() {
    console.log(`组件更新之前-beforeUpdate`)
  },
  updated() {
    console.log(`组件更新之后-updated`)
  },
  beforeUnmount() {
    console.log(`组件卸载之前-beforeUnmount`)
  },
  unmounted() {
    console.log(`组件卸载之后-unmounted`)
  }
}
</script>

例子二:compositionAPI

<template>
  <div>
    <h1>Hello World!</h1>
  </div>
</template>

<script setup lang="ts">
  import {
    onBeforeMount,
    onMounted,
    onBeforeUpdate,
    onUpdated,
    onBeforeUnmount,
    onUnmounted
  } from 'vue'

  onBeforeMount(() => {
    console.log(`组件挂载之前-onBeforeMount`)
  })
  onMounted(() => {
    console.log(`组件挂载之后-onMounted`);
  })
  onBeforeUpdate(() => {
    console.log(`组件更新之前-onBeforeUpdate`);
  })
  onUpdated(() => {
    console.log(`组件更新之后-onUpdated`);
  })
  onBeforeUnmount(() => {
    console.log(`组件卸载之前-onBeforeUnmount`);
  })
  onUnmounted(() => {
    console.log(`组件卸载之后-onUnmounted`);
  })
</script>

总结

以上是Vue3组件,其中包括了组件的基本概念、组件的生命周期钩子函数等内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值