javascript的钩子函数详解 | 青训营笔记

177 阅读4分钟

钩子函数是 JavaScript 中的一种编程概念,又称为回调函数或事件处理函数。它是一种函数,可以在某个特定的事件发生时被触发执行,以便我们可以在特定的时刻对事件进行处理。

在 JavaScript 中,钩子函数通常是作为参数传递给其他函数的,当这些函数执行时,它们会在特定的时刻调用钩子函数。

在此之前你需要了解一下 回调函数:

回调函数是你留个处理方法给事件,事件发生了以后会自动执行你留下调处理方法。

钩子函数是好比找了个代理,监视事件是否发生,如果发生了这个代理就执行你的事件处理方法;在这个过程中,代理就是钩子函数。

在某种意义上,回调函数做的处理过程跟钩子函数中要调用调方法一样。 但是有一点: 钩子函数一般是由事件发生者提供的。直白了说,它留下一个钩子,这个钩子的作用就是钩住你的回调方法。

如果稍微懂点Vue的话,里面有生命周期函数,说的是一个页面不同时期执行的函数,那些都是钩子函数 举个例子: ``

<script>

    new Vue({  //new 一个实例对象
        el:"#root",
        data:{
            str:1,
        },
        mounted(){    //当我的实例挂载完毕之后 会执行  这个就是钩子函数
            console.log(123)
        }
    })

</script>

这个 mounted()是vue.js框架里面自带的,无论我写不写它就在那里,但当我调用它以后,它就会执行我参数的内容。

下面列举一下见到的生命周期钩子函数(其中最常用的是 mounted、updated 和 unmounted)

beforeCreate:在组件实例初始化完成之后立即调用。

Created:在组件实例处理完所有与状态相关的选项后调用。

beforeMount:在组件被挂载之前调用。

Mounted:在组件被挂载之后调用。

beforeUpdate:在组件即将因为一个响应式状态变更而更新其 DOM 树之前调用。

Updated:在组件因为一个响应式状态变更而更新其 DOM 树之后调用。

beforeUnmount:在一个组件实例被卸载之前调用。

Unmounted:在一个组件实例被卸载之后调用。

errorCaptured:在捕获了后代组件传递的错误时调用。

renderTracked:在一个响应式依赖被组件的渲染作用追踪后调用。

renderTriggered:在一个响应式依赖被组件触发了重新渲染之后调用。

Activated:若组件实例是 缓存树的一部分,当组件被插入到 DOM 中时调用。

这个钩子在服务端渲染时不会被调用。

Deactivated:若组件实例是 缓存树的一部分,当组件从 DOM 中被移除时调用。这个钩子在服务端渲染时不会被调用。

serverPrefetch:当组件实例在服务器上被渲染之前要完成的异步函数。

onMounted():注册一个回调函数,在组件挂载完成后执行。

onUpdated():注册一个回调函数,在组件因为响应式状态变更而更新其 DOM 树之后调用。

onUnmounted():注册一个回调函数,在组件实例被卸载之后调用。

onBeforeMount():注册一个钩子,在组件被挂载之前被调用。

onBeforeUpdate():注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用。

onBeforeUnmount():注册一个钩子,在组件实例被卸载之前调用。

onErrorCaptured():注册一个钩子,在捕获了后代组件传递的错误时调用。

onRenderTracked()注册一个调试钩子,当组件渲染过程中追踪到响应式依赖时调用。这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用。

onRenderTriggered():注册一个调试钩子,当响应式依赖的变更触发了组件渲染时调用。这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用。

onActivated():注册一个回调函数,若组件实例是 缓存树的一部分,当组件被插入到 DOM 中时调用。这个钩子在服务器端渲染期间不会被调用。

onDeactivated():注册一个回调函数,若组件实例是 缓存树的一部分,当组件从 DOM 中被移除时调用。这个钩子在服务器端渲染期间不会被调用。

onServerPrefetch():注册一个异步函数,在组件实例在服务器上被渲染之前调用。