欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue Hook Event 深度解讀

 更新時(shí)間:2023年01月12日 10:10:29   作者:半獸先生  
Hook Event 是 Vue 的自定義事件結(jié)合生命周期鉤子實(shí)現(xiàn)的一種從組件外部為組件注入額外生命周期方法的功能,本文重點(diǎn)給大家介紹Vue Hook Event 解讀,感興趣的朋友一起看看吧

前言

Hook Event (鉤子事件)相信很多 Vue 開(kāi)發(fā)者都沒(méi)有使用過(guò),甚至沒(méi)聽(tīng)過(guò),畢竟 Vue 官方文檔中也沒(méi)有提及。

Vue 提供了一些生命周期鉤子函數(shù),供開(kāi)發(fā)者在特定的邏輯點(diǎn)添加額外的處理邏輯,比如: 在組件掛載階段提供了beforeMount 和 mounted 兩個(gè)生命周期鉤子,供開(kāi)發(fā)者在組件掛階段執(zhí)行額外的邏處理,比如為組件準(zhǔn)備渲染所需的數(shù)據(jù)。

那這個(gè)Hook Event——鉤子事件,其中也有鉤子的意思,和 Vue 的生命周期鉤子函數(shù)有什么關(guān)系呢? 它又有什么用呢?這就是這邊文章要解答的問(wèn)題。

 什么是 Hook Event ?

Hook Event是 Vue 的自定義事件結(jié)合生命周期鉤子實(shí)現(xiàn)的一種從組件外部為組件注入額外生命周期方法的功能。

 如下圖所示,如果引入第三方業(yè)務(wù)組件,組件內(nèi)部請(qǐng)求數(shù)據(jù),沒(méi)有l(wèi)oding,如果修改源碼的話(huà)會(huì)很麻煩,現(xiàn)在用hook可以解決。

 通過(guò) hook event 在組件外部為組件注入額外的生命周期鉤子邏輯:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="app">
            <comp @hook:mounted="handleHookEvent"></comp>
        </div>
        <script src="./vue.js"></script>
        <script>
            // 第三方業(yè)務(wù)組件
            Vue.component("comp",{
                template:`
                    <ul>
                        <li v-for="item in arr" :key="JSON.stringify(item)">{{ item }}</li>
                    </ul>
                `,
                data(){
                    return {
                        arr:[]
                    }
                },
                async mounted(){
                    console.log("comp mounted");
                    // 通過(guò) hook event 在組件外部為組件注入額外的生命周期鉤子邏輯
                    // 通過(guò)Promise + setTimeout 延時(shí)程序,模擬接口調(diào)用的過(guò)程
                    this.arr = await new Promise(resolve=>{
                       setTimeout(()=>{
                        resolve([1,2,3,4,5])
                       },2000)
                    }) 
                }
            })
 
            new Vue({
                el:"#app",
                methods:{
                    handleHookEvent() {
                        console.log('loding...');
                    }
                }
            })
        </script>
    </body>
</html>
Hook Event 有什么作用?

通過(guò) Hook Event 可以從組件外部為組件注入額外的生命周期方法。 

總結(jié)

面試官 問(wèn): 什么是 Hook Event?
答:
Hook Event是 Vue 的自定義事件結(jié)合生命周期鉤子實(shí)現(xiàn)的一種從組件外部為組件注入額外生命周期方法的功能。.

面試官 問(wèn): Hook Event 是如果實(shí)現(xiàn)的?
答:
<comp @hook:lifecycleMethod="method" />
處理組件自定義事件的時(shí)候 (vm.$on)如果發(fā)現(xiàn)組件有 hook:xx 格式的事件(xx為 Vue 的生命周期函數(shù)),測(cè)將 vm._hasHookEvent 置為 true ,表示該組件有 Hook Event
在組件生命周期方法被觸發(fā)的時(shí)候,內(nèi)部會(huì)通過(guò) calLHook 方法來(lái)執(zhí)行這些生命周期函數(shù),在生命周期函數(shù)執(zhí)行之后,如果發(fā)現(xiàn) vm._hasHookEvent 為 true,則表示當(dāng)前組件有 Hook Event,通過(guò)vm.$emit('hook:xx') 觸發(fā) Hook Event 的執(zhí)行
這就是 Hook Event 的實(shí)現(xiàn)原理。

到此這篇關(guān)于Vue Hook Event 解讀的文章就介紹到這了,更多相關(guān)Vue Hook Event 解讀內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.js每天必學(xué)之組件與組件間的通信

    Vue.js每天必學(xué)之組件與組件間的通信

    Vue.js每天必學(xué)之組件與組件間的通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例

    vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例

    下面小編就為大家分享一篇vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Vue3?企業(yè)級(jí)組件庫(kù)框架搭建?pnpm?monorepo實(shí)戰(zhàn)示例

    Vue3?企業(yè)級(jí)組件庫(kù)框架搭建?pnpm?monorepo實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Vue3?企業(yè)級(jí)組件庫(kù)框架搭建?pnpm?monorepo實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 詳解VUE中的Proxy代理

    詳解VUE中的Proxy代理

    這篇文章主要介紹了Proxy代理對(duì)象詳解,Proxy 是ES6中提供的一個(gè)非常強(qiáng)大的功能,可以用來(lái)代理另一個(gè)對(duì)象,從而攔截、監(jiān)視并修改這個(gè)對(duì)象的各種操作,需要的朋友可以參考下
    2023-04-04
  • Electron+vue從零開(kāi)始打造一個(gè)本地播放器的方法示例

    Electron+vue從零開(kāi)始打造一個(gè)本地播放器的方法示例

    這篇文章主要介紹了Electron+vue從零開(kāi)始打造一個(gè)本地播放器的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • vue3+vite使用History路由模式打包部署項(xiàng)目的步驟及注意事項(xiàng)

    vue3+vite使用History路由模式打包部署項(xiàng)目的步驟及注意事項(xiàng)

    這篇文章主要介紹了vue3+vite使用History路由模式打包部署項(xiàng)目的步驟及注意事項(xiàng),配置過(guò)程包括在Vue項(xiàng)目中設(shè)置路由模式、調(diào)整打包配置以及Nginx服務(wù)器的配置,正確的部署配置能夠確保應(yīng)用順利運(yùn)行,提升用戶(hù)體驗(yàn),需要的朋友可以參考下
    2024-10-10
  • vue項(xiàng)目base64字符串轉(zhuǎn)圖片的實(shí)現(xiàn)代碼

    vue項(xiàng)目base64字符串轉(zhuǎn)圖片的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue項(xiàng)目base64字符串轉(zhuǎn)圖片的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 詳解vue或uni-app的跨域問(wèn)題解決方案

    詳解vue或uni-app的跨域問(wèn)題解決方案

    這篇文章主要介紹了詳解vue或uni-app的跨域問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 啟動(dòng)myvue報(bào)錯(cuò)npm?ERR!?code?ENOENT?npm?ERR!?syscall?open的解決辦法

    啟動(dòng)myvue報(bào)錯(cuò)npm?ERR!?code?ENOENT?npm?ERR!?syscall?open的解

    這篇文章主要介紹了啟動(dòng)myvue報(bào)錯(cuò)npm?ERR!?code?ENOENT?npm?ERR!?syscall?open的解決辦法,文中給出了詳細(xì)的解決方法,并通過(guò)圖文結(jié)合的方式介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Vue.js實(shí)戰(zhàn)之使用Vuex + axios發(fā)送請(qǐng)求詳解

    Vue.js實(shí)戰(zhàn)之使用Vuex + axios發(fā)送請(qǐng)求詳解

    這篇文章主要給大家介紹了關(guān)于Vue.js使用Vuex與axios發(fā)送請(qǐng)求的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04

最新評(píng)論