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

淺聊一下Vue2中的functional組件

 更新時間:2023年08月15日 09:07:27   作者:陽樹陽樹  
最近聽到有人提到了Vue2的functional組件,大致上是說這個東西沒有生命周期,在渲染層面上,會減少很多的消耗,一番處理之后,首屏時間和內存都能減少不少,所以本文小編就來和大家聊聊Vue2中的functional組件<BR>

前言

最近組內有一個分享提到了 Vue2 的 functional 組件,大致上是說這個東西沒有生命周期,在渲染層面上,會減少很多的消耗,一番處理之后,首屏時間和內存都能減少不少。

由此,我打算來好好學一下挖一下這個知識點。

functional 組件是什么?

Vue.js 中的 functional 函數化組件是一種特殊類型的無狀態(tài)組件,它不依賴于內部狀態(tài),只依賴于傳入的 props。這種組件沒有實例,也就是說它們沒有 this 上下文。函數化組件的主要特點如下:

  • 無狀態(tài):函數化組件不包含響應式數據或內部狀態(tài),它們只依賴于傳入的 props。
  • 無實例:函數化組件沒有實例,因此沒有 this 上下文。
  • 更高的性能:由于沒有實例和響應式數據,函數化組件的渲染性能更高,適用于頻繁更新的場景。
  • 簡潔的定義:函數化組件使用 render 函數定義,不需要完整的 Vue 組件選項對象。

函數化組件的定義示例:

Vue.component('my-functional-component', {
  functional: true,
  props: {
    message: {
      type: String,
      required: true
    }
  },
  render: function (createElement, context) {
    return createElement('div', context.props.message);
  }
});

functional函數化組件做比對是深度比對,會對對象深入的做對比,不是淺比較:

如果 props 對象外部不變,但內部的參數發(fā)生變化,函數化組件會重新渲染。因為函數化組件是無狀態(tài)的,它們只依賴于傳入的 props。當 props 的內部參數發(fā)生變化時,Vue 會檢測到這些變化并重新渲染函數化組件。

Vue.component('my-functional-component', {
  functional: true,
  props: {
    userInfo: {
      type: Object,
      required: true
    }
  },
  render: function (createElement, context) {
    return createElement('div', context.props.userInfo.name);
  }
});

特點

1.functional 函數化組件本身無 watch/computed,這就導致我們不能像在普通 Vue 組件中那樣使用 watch 或 computed 屬性來監(jiān)聽參數變化。因為函數化組件沒有實例和響應式數據,它們只依賴于傳入的 props。當 props 發(fā)生變化時,函數化組件會自動重新渲染。

如果我們想要監(jiān)聽怎么辦?

比較可行的辦法是:在父組件中監(jiān)聽 props 變化,并在適當的時機傳遞新的 props 給函數化組件。這樣,函數化組件會在接收到新的 props 時自動重新渲染。

2.functional 函數化組件本身無實例,這會導致如下后果:

  • 在函數化組件中,無法使用 this 訪問組件實例,因為它們沒有實例。
  • 由于沒有實例,函數化組件無法使用 Vue 實例的方法和屬性,例如 $emit、$watch、$refs 等。
  • 函數化組件沒有實例,因此無法使用生命周期鉤子函數,如 createdmounted、updated 等。
  • 函數化組件沒有響應式數據和內部狀態(tài),它們只依賴于傳入的 props。這意味著我們無法在函數化組件中使用 data、computed 和 watch 等選項。
  • 在函數化組件中,我們需要通過 context 對象訪問插槽(slots)和作用域插槽(scoped slots),而不是使用 this.$slots 和 this.$scopedSlots。

使用如下:

Vue.component('my-functional-component', {
  functional: true,
  props: {
    message: {
      type: String,
      required: true
    }
  },
  render: function (createElement, context) {
    // 訪問 props
    const message = context.props.message;
    // 訪問插槽
    const slots = context.slots();
    const defaultSlot = slots.default;
    // 訪問作用域插槽
    const scopedSlots = context.scopedSlots;
    const customSlot = scopedSlots.customSlot;
    // 訪問事件監(jiān)聽器
    const listeners = context.listeners;
    const clickListener = listeners.click;
});

到此這篇關于淺聊一下Vue2中的functional組件的文章就介紹到這了,更多相關Vue2 functional組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue純前端使用exceljs導出excel文件的完整圖文教程

    Vue純前端使用exceljs導出excel文件的完整圖文教程

    這篇文章將一步一步為大家詳細介紹一下exceljs插件中的使用,以及如何使用exceljs導出excel文件,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • Vue使用screenfull實現全屏效果

    Vue使用screenfull實現全屏效果

    這篇文章主要為大家詳細介紹了Vue使用screenfull實現全屏,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • vue.js+elementUI實現點擊左右箭頭切換頭像功能(類似輪播圖效果)

    vue.js+elementUI實現點擊左右箭頭切換頭像功能(類似輪播圖效果)

    這篇文章主要介紹了vue.js+elementUI實現點擊左右箭頭切換頭像功能(類似輪播圖),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • vue.js中關于點擊事件方法的使用(click)

    vue.js中關于點擊事件方法的使用(click)

    這篇文章主要介紹了vue.js中關于點擊事件方法的使用(click),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實現短信驗證碼登錄功能(流程詳解)

    vue實現短信驗證碼登錄功能(流程詳解)

    無論是移動端還是pc端登錄或者注冊界面都會見到手機驗證碼登錄這個功能,輸入手機號,得到驗證碼,這篇文章主要介紹了基于vue實現短信驗證碼登錄功能,需要的朋友可以參考下
    2019-12-12
  • vue頁面使用多個定時器的方法

    vue頁面使用多個定時器的方法

    這篇文章主要為大家詳細介紹了vue頁面使用多個定時器的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 關于vue3.0中的this.$router.replace({ path: ''/''})刷新無效果問題

    關于vue3.0中的this.$router.replace({ path: ''/''})刷新無效果問題

    這篇文章主要介紹了關于vue3.0中的this.$router.replace({ path: '/'})刷新無效果問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • 關于vue v-for循環(huán)解決img標簽的src動態(tài)綁定問題

    關于vue v-for循環(huán)解決img標簽的src動態(tài)綁定問題

    今天小編就為大家分享一篇關于vue v-for循環(huán)解決img標簽的src動態(tài)綁定問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • VUE中如何實現阻止事件冒泡

    VUE中如何實現阻止事件冒泡

    這篇文章主要介紹了VUE中如何實現阻止事件冒泡,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue3編程流暢技巧自定義Hooks

    Vue3編程流暢技巧自定義Hooks

    這篇文章主要為大家介紹了Vue3必學技巧-自定義Hooks-讓寫Vue3更暢快示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論