0
点赞
收藏
分享

微信扫一扫

springboot/ssm工厂生产设备维护管理系统Java企业设备档案维修系统web

生命周期:

生命周期钩子主要包括:

初始化阶段

setup

这是 vue 3 引入的新生命周期钩子,在 beforeCreate 和 created 钩子之前调用。setup 函数接收两个参数:props 和 context(包含 attrsslotsemit 等)。在 setup 中,你可以使用 ref 和 reactive 来创建响应式状态,并且可以直接访问组件的 props

beforeCreate

在组件实例创建之前调用。此时,组件的 props 和 data 还未被观察和初始化。在 setup 钩子之后调用。

created

组件实例创建完成后调用。在这个阶段,组件的 props 和 data 已经被观察和初始化,但 DOM 还未挂载。可以在这里执行一些不需要 DOM 的初始化操作。

挂载阶段

beforeMount

在组件的模板编译和虚拟 DOM 已经创建,但尚未挂载到真实 DOM 上之前调用。

mounted

组件已经挂载到真实 DOM 上,可以访问和操作 DOM 元素。通常在这里执行一些初始的 DOM 操作或第三方库的初始化。

更新阶段

beforeUpdate

组件的响应式数据发生变化,但尚未重新渲染和更新 DOM 之前调用。可以在这里访问组件更新前的状态。

updated

组件已经重新渲染和更新 DOM 之后调用。当需要基于新的 DOM 状态执行操作时,可以在这里进行。

卸载阶段

beforeUnmount

组件实例被销毁之前调用。在这个阶段,组件仍然完全可用,但即将被卸载。可以在这里执行一些清理操作,如取消计时器、移除事件监听器等。

unmounted

组件实例已经被销毁,组件的所有功能都已失效。在这个阶段,无法再访问组件实例或任何其状态。

错误处理

errorCaptured

当组件或其后代组件发生错误时调用。这个钩子可以用于错误处理和报告。

<template>  
  <div>  
    <p>{{ message }}</p>  
    <button @click="changeMessage">Change Message</button>  
  </div>  
</template>  
  
<script setup>  
import { ref, onMounted, onBeforeUnmount } from 'vue';  
  
const message = ref('Hello, Vue 3!');  
let count = ref(0);  
  
function changeMessage() {  
  message.value = `Message changed ${++count.value} times!`;  
}  
  
onMounted(() => {  
  console.log('Component mounted!');  
  // 执行一些需要在组件挂载后执行的代码  
});  
  
onBeforeUnmount(() => {  
  console.log('Component about to be unmounted!');  
  // 执行一些需要在组件卸载前执行的清理操作  
});  
</script>

组件:

创建组件

<template>  
  <div>  
    <p>Count: {{ count }}</p>  
    <button @click="increment">Increment</button>  
  </div>  
</template>  
  
<script setup lang="ts">  
import { ref } from 'vue';  
  
// 定义一个响应式引用  
const count = ref(0);  
  
// 定义一个方法  
function increment() {  
  count.value++;  
}  
  
// 可以直接将变量和方法暴露给模板  
// 它们会在模板中自动变得可用  
</script>  
  
<style scoped>  
/* 组件样式 */  
</style>

响应式数据和方法

  • name 和 age 是使用 ref 创建的响应式引用,它们分别存储用户的姓名和年龄。
  • incrementAge 是一个方法,用于增加用户的年龄。

计算属性

  • title 是一个计算属性,它基于 name 的值动态生成标题。

Props

  • UserProps 是一个 TypeScript 接口,定义了组件接受的 props 的类型。
  • defineProps 用于声明组件的 props,并根据 UserProps 接口进行类型检查。
  • 在 onMounted 生命周期钩子中,我们根据传入的 props 初始化 name 和 age 的值。

模板

  • 在模板中,我们直接使用了在 <script setup> 中定义的 titlenameage 和 incrementAge。由于 <script setup> 的语法,这些变量和方法在模板中自动可用。
举报

相关推荐

0 条评论