想在VUE中构建企业就绪的应用程序吗?学习钩子。
vue中的生命周期挂钩是在vue.js中学习的最重要概念之一
使用VUE 3中的Vue 2和Vue 3中的钩子类似地工作。但是,当使用构图API时,您将面临一些更改,并增加更多的生命周期钩和Vue中的企业应用程序。
在本文中,您将学习VUE 3中的不同生命周期挂钩,如何使用它们以及如何将它们集成到您的企业应用程序中。
VUE 3生命周期钩的概述
生命周期挂钩是一种特殊功能,允许开发人员在发生特定事件之前或之后的任何特定时刻或之后钩住或创建自定义功能。
vue.js生命周期钩被分为6个主钩,进一步分为12个钩子。以下是6个主要事件:
让我们探索每个事件并学习每个事件下分类的钩子。
创建钩子
创建事件在组件的创建上运行。它主要用于设置您新创建的组件。
在创建事件下,您的挂钩等钩子:
beforecreate
在初始化所有反应性数据和事件之前,请调用beforeCreate
钩。这使得beforeCreate
事件无法访问组件的任何反应性数据和事件。
这是一个代码段,显示了如何在选项API中实现beforeCreate
钩
export default {
data() {
return {
val: "hello",
};
},
beforeCreate() {
console.log("Value of val is: " + this.val);
},
};
在选项API中,beforeCreate
钩非常重要,当您要调用初始化数据或不需要分配数据
创建
created
钩负责初始化所有反应性数据和事件。在created
钩中,我们现在可以访问组件的数据和事件,因为它们已经初始化了。
这是一个代码段,显示了如何在选项API中实现created
钩:
export default {
data() {
return {
val: "hello",
};
},
created() {
console.log("Value of val is: " + this.val);
},
};
created
钩子对于初始化或调用API或逻辑也很有用,在安装组件之前需要调用一次,并且最重要的是created
Hook可以分配数据,这使得为组件生成初始数据很重要。 /p>
在VUE 3组成API中,beforeCreate
和created
钩被setup
方法本身替换。这意味着您的代码将在组合API中自动执行,而无需在beforeCreate
或created
Hook中明确调用它。
这是一个代码段,显示了如何在设置方法中明确调用代码或无需使用beforeCreate
或created
挂钩的函数或代码段,
<script>
import { ref } from 'vue'
export default {
setup() {
const val = ref('hello')
// This will be called automatically by default
console.log('Value of val is: ' + this.val)
}
}
</script>
使用编译时间句法糖<script setup>
也是如此。这是一个例子:
<script setup>
const val = ref('hello') // This will be called automatically by default
console.log('Value of val is: ' + this.val)
</script>
现在,您可以轻松地创建和直接调用您的功能,而不必担心是否在created
或beforeCreated
Hook中调用它们。
安装钩子
安装挂钩手柄安装和渲染组件,此类别中有重要的钩子,因为它们负责网页中元素的可见性。以下是应用中一些最常用的挂钩。
- 登上
- onbeforemount
- 肿瘤
onMounted
钩与选项API中的mounted
挂钩相同,除了名称更改和在构图API中使用onMounted
钩的方法。
下面是一个代码段
<script setup>
import { ref, onMounted } from 'vue'
const el = ref()
onMounted(() => {
el.value // <div>
})
</script>
<template>
<div ref="el"></div>
</template>
有一些有关使用onMounted
钩的警告,例如:
- 它可以在
<Suspense>
树内的异步组件或组件内使用 - 它不能在服务器端渲染中或在服务器端渲染期间使用。
- 必须与直接链接到父容器的直接父母或子容器进行调用。
onMounted
钩用于执行需要访问组件渲染的DOM的副作用。这使得在所有元素和组件都完全安装和渲染后调用和更新业务逻辑很有用。
on beforemounted
onBeforeMounted
钩是一个特殊的钩子,在安装组件之前就称为。要注意的一件重要的事情是,当调用此钩子时,组件已经完成设置其反应性状态。
这意味着您所在州的数据,ref
,reactive
已经初始化,但尚未向用户呈现DOM。
这是如何使用onBeforeMounted
钩子的一个示例:
<script setup>
import { ref, onBeforeMounted } from 'vue'
onBeforeMounted(() => {
console.log('Before Mounted Hook')
})
</script>
<template>
<div ref="el"></div>
</template>
更新挂钩
此类别的挂钩是在组件更新之前,之前和之后的。此类别中有重要的挂钩,因为它们负责您网页中的元素重新渲染。
以下是应用中一些最常用的挂钩:
- onbeforeupdate
- 努力
- 肿瘤
onBeForeupdate
由于来自反应性状态的更改或更新,在组件即将更新或重新渲染其DOM树之前,onBeforeUpdate
钩被调用。
使用VUE时,您可以更新反应性数据,并立即实时查看更新。但是,这通常是关于反应性的甜蜜之处,但是,在使用新值更新组件之前,onBeforeUpdate
被调用。
这是如何使用onBeforeUpdate
钩的一个示例:
<script setup>
import { ref, onBeforeUpdate } from 'vue'
onBeforeUpdate(() => {
console.log('Before Updated Hook')
})
</script>
<template>
<div ref="el"></div>
</template>
updated
onUpdated
挂钩是特殊且经常使用的,因为它在组件更新或重新呈现DOM树之后被称为DOM树。
这是如何使用onUpdated
钩子的一个示例:
<script setup>
import { ref, onUpdated } from 'vue'
const count = ref(0)
onUpdated(() => {
console.log(document.getElementById('count').textContent)
})
</script>
<template>
<button id="count" @click="count++"></button>
</template>
这是一个简单的数字增量应用程序。当单击按钮并使用onUpdated
钩记录count
元素的值时,它会增加数字。
如果您有亲子组件结构,则在父母更新挂钩之前调用孩子onUpdated
钩。
有时您可能需要访问导致更新的元素,因为您可能同时具有多个元素更新。您可以使用nextTick()
实用程序访问特定元素。
也必须注意,如果将onUpdated
钩子内的状态变异,则可以轻松地进入无限环路。
肿瘤
onActivated
钩是Vue 3中的一个新增加。它非常特别,有助于通过VUE组件提高性能。
将组件实例从缓存中插入DOM树之后被调用。使用kecaches组件时,使用keepalive标签如下所示:
<KeepAlive>
<component :is="view"></component>
</KeepAlive>
如所示,任何缓存的组件都将在 deactivated 状态中,当组件实例从DOM中删除时,而不是完全破坏组件并以后重新启动,将组件从高速缓存和激活。
这是如何使用onActivated
钩的一个示例:
<script setup>
import {onActivated} from 'vue' onActivated(() =>{" "}
{console.log("Activated hook is called")})
</script>
调试挂钩
调试类别中的钩子对VUE是相对较新的,有些仅在开发中被调用。
调试挂钩房屋不同的挂钩,使Vue开发人员可以在开发和生产过程中实时调试和捕获错误。
以下是调试类别下一些最常用的挂钩:
- OnErorcaptrud
- OnRenderTracked
- Onrendredriggene
OnErorcappred
这是一个非常重要的挂钩,用于实时捕获组件内的错误。您可以捕获以下错误:
- 组件渲染
- 活动处理者
- 生命周期钩
-
setup()
功能 - 观察者
- 自定义指令钩
- 过渡钩
这是如何使用onErrorCaptured
钩子的一个示例:
<script setup>
import { ref, onBeforeUpdate } from 'vue'
// Added onErrorCaptured lifecycle hook
onErrorCaptured((error) => {
// You can process the error here
console.log(error)
return true;
});
</script>
未能跟踪
onRenderTracked
钩是一个调试挂钩,每次跟踪反应性依赖性时都会被调用。这是如何使用onRenderTracked
钩进行调试的一个示例。
<script setup>
import {(ref, onRenderTracked)} from 'vue' const num = ref(0) const num2 =
ref(0) // It will be called twice, once for num and once for num2
onRenderTracked((event) => {console.log(event)})
</script>
重要的是要注意,此钩仅应在开发而不用于生产中。
onRenderTriggered
钩也是一个调试挂钩,当反应性依赖性更新时,可以调用。这是如何使用onRenderTriggered
钩进行调试的一个示例。
<script setup>
import {(ref, onRenderTracked)} from 'vue' const num = ref(0) // It will be
called once the num is updated onRenderTriggered((event) =>{" "}
{console.log(event)})
</script>
重要的是要注意,此钩仅应在开发而不用于生产中。
服务器端钩子
服务器端类别中的钩子对VUE是相对较新的,并且它包含在服务器端呈现组件之前或之后调用的挂钩。
截至写作时,Vue只有一个挂钩属于此类别:
onServerPrefetch
钩是一个服务器端挂钩,在要在服务器上渲染的组件实例之前被调用。在执行仅服务器数据获取时,此挂钩是完美的,因为它仅在服务器端渲染期间调用。
这是如何使用onServerPrefetch
钩作为服务器端逻辑的一个示例:
<script setup>
import {(ref, onServerPrefetch)} from 'vue' const data = ref(null)
onServerPrefetch(async () =>{" "}
{
// pre-fetch data on server as it is faster than on the client
(data.value = await fetchOnServer(/* ... */))
}
)
</script>
另外,请注意,如果回调返回承诺,则服务器渲染器将等到呈现构件之前解决承诺。
。破坏
破坏钩用于去除组件,清理组件,停用组件或事件听众以避免内存泄漏。破坏类别包含很多钩子,与我们之前涵盖的类别相反。
- anunmored li>
- onbeforeunmount
- 启用
在组件被卸下后,onUnmounted
挂钩被调用。它用于清理手动创建的副作用,例如计时器,DOM事件侦听器或服务器连接。这是onUnmounted
钩的示例
<script setup>
import {onUnmounted} from 'vue' let intervalId onMounted(() =>{" "}
{
(intervalId = setInterval(() => {
// ...
}))
}
) onUnmounted(() => clearInterval(intervalId))
</script>
在上面的代码段中,我们使用onMounted
钩创建了一个计时器,并使用onUnmounted
钩清除计时器。
onbeforeunmount
onBeforeUnmount
钩与onBeforeMount
钩的对立面。在要卸载组件实例之前,它就被称为。这是onBeforeUnmounted
钩子的示例:
<script setup>
import {onUnmounted} from 'vue' let intervalId onBeforeMount(() =>{" "}
{
(intervalId = setInterval(() => {
// ...
}))
}
) onBeforeUnmount(() => clearInterval(intervalId))
</script>
在上面的代码段中,我们使用onBeforeMount
钩创建了一个计时器,并使用onBeforeUnmount
钩清除计时器。
on Deactivated
打击的钩子是前面讨论的诱发钩子的对立面。在组件实例从DOM中删除后,它是由keepalive标签缓存的一部分后调用的。
这是启用钩子的一个例子:
<script setup>
import {onDeactivated} from 'vue' onDeactivated(() =>{" "}
{console.log("Deactivated hook is called")})
</script>
最后一句话
vue 3 Lifecycle挂钩解释说是一篇文章,概述了Vue 3中不同生命周期的钩子以及如何使用它们。
本文解释说,生命周期挂钩是VUE中的特殊功能,可让开发人员在事件发生之前或之后的特定时刻钩住或创建自定义功能。
钩子分为六个主要事件:创建,安装,更新,调试,服务器端和破坏。
在创建事件下,文章解释了两个钩子:beforeCreate
和created
。在初始化反应性数据和事件之前,beforeCreate
钩被调用,而created
钩负责初始化反应性数据和事件。
接下来将讨论安装事件挂钩,包括onMounted
,onBeforeMount
和onActivated
。在安装和渲染组件后,onMounted
挂钩用于执行副作用,而在安装组件之前,onBeforeMount
钩被调用。 onActivated
钩是VUE 3中的一个新添加剂,当将组件实例插入从缓存中插入DOM。
更新事件挂钩覆盖onBeforeUpdate
,onUpdated
和onActivated
。由于反应性状态的变化,在组件更新其DOM树之前,请调用onBeforeUpdate
挂钩,而在组件更新或重新租用DOM树之后,onUpdated
钩被调用。当从缓存激活组件实例时,onActivated
钩被调用。
然后,文章讨论了调试挂钩,其中包括onErrorCaptured
,onRenderTracked
和onRenderTriggered
。这些挂钩用于在开发和生产过程中调试和捕获错误。
服务器端挂钩类别包括onServerPrefetch
,在服务器上呈现组件实例之前,该类别被调用。此挂钩可用于服务器端渲染期间仅使用服务器的数据获取。
最后,破坏事件挂钩覆盖了onUnmounted
,onBeforeUnmount
和onDeactivated
。在卸下组件并用于清理手动创建的副作用后,将调用onUnmounted
钩。在卸下组件之前,请调用onBeforeUnmount
钩,并在将组件从DOM上删除后,将调用onDeactivated
钩作为缓存树的一部分。
在整篇文章中,提供了代码段来说明如何使用选项API和VUE 3中的组合API实现每个挂钩。
最初发表于 https://enterprisevue.dev 。