最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺聊一下Vue2中的functional組件

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

前言

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

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

functional 組件是什么?

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

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

函數(shù)化組件的定義示例:

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

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

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

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 函數(shù)化組件本身無 watch/computed,這就導(dǎo)致我們不能像在普通 Vue 組件中那樣使用 watch 或 computed 屬性來監(jiān)聽參數(shù)變化。因為函數(shù)化組件沒有實例和響應(yīng)式數(shù)據(jù),它們只依賴于傳入的 props。當 props 發(fā)生變化時,函數(shù)化組件會自動重新渲染。

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

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

2.functional 函數(shù)化組件本身無實例,這會導(dǎo)致如下后果:

  • 在函數(shù)化組件中,無法使用 this 訪問組件實例,因為它們沒有實例。
  • 由于沒有實例,函數(shù)化組件無法使用 Vue 實例的方法和屬性,例如 $emit、$watch$refs 等。
  • 函數(shù)化組件沒有實例,因此無法使用生命周期鉤子函數(shù),如 created、mounted、updated 等。
  • 函數(shù)化組件沒有響應(yīng)式數(shù)據(jù)和內(nèi)部狀態(tài),它們只依賴于傳入的 props。這意味著我們無法在函數(shù)化組件中使用 data、computed 和 watch 等選項。
  • 在函數(shù)化組件中,我們需要通過 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;
});

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

相關(guān)文章

  • 一文帶你搞懂Vue.js如何實現(xiàn)全選反選功能

    一文帶你搞懂Vue.js如何實現(xiàn)全選反選功能

    這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)全選反選功能的相關(guān)知識,文中是示例代碼簡潔易懂,具有一定的借鑒價值,有需要的小伙伴可以了解下
    2025-01-01
  • Vue?項目的成功發(fā)布和部署的實現(xiàn)

    Vue?項目的成功發(fā)布和部署的實現(xiàn)

    本文主要介紹了Vue?項目的成功發(fā)布和部署的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Vue實現(xiàn)Dialog封裝

    Vue實現(xiàn)Dialog封裝

    在寫業(yè)務(wù)的時候很常見的一個場景就是需要在不同的頁面調(diào)用同一個表單,常用的交互就是把表單以彈窗的形式展示,本文主要介紹了Vue實現(xiàn)Dialog封裝,感興趣的可以了解一下
    2021-07-07
  • vue中v-model和響應(yīng)式的實現(xiàn)原理解析

    vue中v-model和響應(yīng)式的實現(xiàn)原理解析

    這篇文章主要介紹了vue中v-model和響應(yīng)式的實現(xiàn)原理,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • vue2?自定義?el-radio-button?的樣式并設(shè)置默認值的方法

    vue2?自定義?el-radio-button?的樣式并設(shè)置默認值的方法

    這篇文章主要介紹了vue2?自定義?el-radio-button?的樣式并設(shè)置默認值的操作方法,代碼分為html部分和css修改樣式代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • vue3如何用pinia替代vuex

    vue3如何用pinia替代vuex

    這篇文章主要介紹了vue3如何使用pinia替代vuex問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3觸發(fā)父組件兩種寫法

    vue3觸發(fā)父組件兩種寫法

    這篇文章主要介紹了vue3觸發(fā)父組件兩種寫法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Vue3 中 Lottie動畫庫的使用指南

    Vue3 中 Lottie動畫庫的使用指南

    Lottie 是 Vue3 項目中實現(xiàn)高品質(zhì)動畫的最佳選擇之一,通過封裝通用組件可快速集成到項目中,結(jié)合其豐富的 API 能實現(xiàn)靈活的交互控制,本文來介紹一下Lottie動畫庫的使用,通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-02-02
  • 實例分析編寫vue組件方法

    實例分析編寫vue組件方法

    在本篇文章中我們給大家總結(jié)了關(guān)于編寫vue組件的方法知識點,有此需要的讀者們跟著學習下。
    2019-02-02
  • 在Vue中使用highCharts繪制3d餅圖的方法

    在Vue中使用highCharts繪制3d餅圖的方法

    本篇文章主要介紹了在Vue中使用highCharts繪制3d餅圖的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論

海城市| 天水市| 汝州市| 唐山市| 焦作市| 马龙县| 奉贤区| 江川县| 历史| 柳河县| 明溪县| 黑河市| 闸北区| 吴江市| 万荣县| 类乌齐县| 赤水市| 商丘市| 金湖县| 彩票| 昭觉县| 黄梅县| 郎溪县| 河东区| 潮州市| 嘉鱼县| 三河市| 衡南县| 灵璧县| 那曲县| 木兰县| 丹棱县| 临漳县| 梁山县| 兰西县| 广元市| 平泉县| 化州市| 瑞金市| 邯郸市| 余干县|