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

Vue 3.5中useTemplateRef和ref的區(qū)別詳解

 更新時(shí)間:2026年02月13日 10:19:02   作者:Hone  
在Vue3中ref是一個(gè)非常實(shí)用的函數(shù),用于創(chuàng)建響應(yīng)式數(shù)據(jù),這篇文章主要介紹了Vue3.5中useTemplateRef和ref區(qū)別的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

useTemplateRefref 都是用來(lái)創(chuàng)建響應(yīng)式引用(Reactive References)的,但在 Vue 3.5+ 中,useTemplateRef 是一個(gè)專(zhuān)門(mén)為模板引用(Template Refs)設(shè)計(jì)的組合式 API (Composable) 。讓我們?cè)敿?xì)對(duì)比一下它們:

ref

  • 核心功能: ref 是 Vue 最基礎(chǔ)的響應(yīng)式系統(tǒng) API 之一。它可以包裝任何值(原始類(lèi)型、對(duì)象、DOM 元素、組件實(shí)例等),使其成為響應(yīng)式的。

  • 用途廣泛:

    • 存儲(chǔ)和響應(yīng)式地更新本地組件狀態(tài)(如 count = ref(0))。
    • 作為模板引用(雖然在 3.5+ 之前常用)。
    • 在任何需要響應(yīng)式引用的地方。
  • 在模板引用中的用法 (舊方式) :

    <template>
      <div ref="divRef">Hello World</div>
    </template>
    
    <script setup>
    import { ref, onMounted } from 'vue';
    
    const divRef = ref(null); // 創(chuàng)建一個(gè) ref
    
    onMounted(() => {
      // divRef.value 現(xiàn)在是 DOM 元素
      console.log(divRef.value); // <div>Hello World</div>
      divRef.value.focus(); // 例如,聚焦到元素上
    });
    </script>
    
    • 問(wèn)題: 在 <script setup> 中,divRef 會(huì)暴露給模板,即使你只想在腳本內(nèi)部使用它。這可能會(huì)污染模板的上下文。

useTemplateRef(Vue 3.5+)

  • 核心功能: 專(zhuān)門(mén)用于獲取對(duì)模板中元素或組件的引用。它返回一個(gè)getter 函數(shù),而不是一個(gè) ref 對(duì)象。

  • 目的: 解決 ref 作為模板引用時(shí)暴露到模板上下文的問(wèn)題,提供更清晰、更符合直覺(jué)的 API。

  • 用途: 用于模板引用。

  • 返回值: 一個(gè) getter 函數(shù),調(diào)用它會(huì)返回最新的模板引用值。這個(gè)函數(shù)本身是響應(yīng)式的,但其返回值(即引用的元素或組件實(shí)例)不是。

  • 優(yōu)勢(shì):

    • 不污染模板上下文: useTemplateRef 返回的 getter 不會(huì)被自動(dòng)暴露到模板中,保持了模板上下文的整潔。
    • 意圖明確: 使用 useTemplateRef 明確表示你正在創(chuàng)建一個(gè)模板引用,提高了代碼的可讀性。
    • 類(lèi)型推斷: 在 TypeScript 中,useTemplateRef 能提供更精確的類(lèi)型推斷。
  • 在模板引用中的用法 (新方式) :

    <template>
      <div ref="divRef">Hello World</div>
    </template>
    
    <script setup>
    import { useTemplateRef, onMounted } from 'vue';
    
    // useTemplateRef 返回一個(gè) getter 函數(shù)
    const getDivRef = useTemplateRef('divRef');
    
    onMounted(() => {
      // 調(diào)用 getter 函數(shù)獲取 DOM 元素
      console.log(getDivRef()); // <div>Hello World</div>
      getDivRef()?.focus(); // 例如,聚焦到元素上
    });
    </script>
    
    • 注意:在 ref 指令中使用的字符串(如 'divRef')必須與 useTemplateRef 的參數(shù)完全匹配。
    • getDivRef() 返回的是實(shí)際的 DOM 元素或組件實(shí)例,如果元素未掛載,則可能返回 nullundefined。

對(duì)比總結(jié)

特性refuseTemplateRef
主要目的創(chuàng)建通用的響應(yīng)式引用專(zhuān)門(mén)用于模板引用
返回值一個(gè)包含 .value 屬性的 ref 對(duì)象一個(gè) getter 函數(shù)
模板暴露會(huì)暴露到模板上下文(如果在 <script setup> 中定義)不會(huì)暴露到模板上下文
類(lèi)型推斷一般更好(尤其是在 TS 中)
意圖表達(dá)通用,需看上下文明確
Vue 版本要求3.0+3.5+
何時(shí)使用通用響應(yīng)式狀態(tài)、舊項(xiàng)目中的模板引用Vue 3.5+ 項(xiàng)目中的模板引用 (推薦)

結(jié)論

  • 對(duì)于模板引用(獲取 DOM 元素或子組件實(shí)例),強(qiáng)烈推薦在 Vue 3.5+ 項(xiàng)目中使用 useTemplateRef。它更清晰、更安全、類(lèi)型更友好。
  • 對(duì)于通用的響應(yīng)式狀態(tài)管理(如計(jì)數(shù)器、布爾標(biāo)志等),繼續(xù)使用 ref。
  • 在你的項(xiàng)目中,如果已經(jīng)升級(jí)到了 Vue 3.5 或更高版本,并且需要獲取模板引用,請(qǐng)優(yōu)先考慮 useTemplateRef

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

相關(guān)文章

  • vue3使用vue-count-to組件的實(shí)現(xiàn)

    vue3使用vue-count-to組件的實(shí)現(xiàn)

    這篇文章主要介紹了vue3使用vue-count-to組件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue如何給數(shù)組添加新對(duì)象并賦值

    vue如何給數(shù)組添加新對(duì)象并賦值

    這篇文章主要介紹了vue如何給數(shù)組添加新對(duì)象并賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3之Mixin的使用方式(全局,局部,setup內(nèi)部使用)

    Vue3之Mixin的使用方式(全局,局部,setup內(nèi)部使用)

    這篇文章主要介紹了Vue3之Mixin的使用方式(全局,局部,setup內(nèi)部使用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue3+elementPlus中 樹(shù)形控件封裝的實(shí)現(xiàn)

    Vue3+elementPlus中 樹(shù)形控件封裝的實(shí)現(xiàn)

    本文主要介紹了Vue3+elementPlus中 樹(shù)形控件封裝的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 詳解Vuex的屬性和作用

    詳解Vuex的屬性和作用

    這篇文章主要為大家介紹了Vuex的屬性和作用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • vue3獲取子組件的DOM元素的方法總結(jié)

    vue3獲取子組件的DOM元素的方法總結(jié)

    在 Vue 3 中,訪(fǎng)問(wèn)子組件的 DOM 元素是一個(gè)常見(jiàn)的需求,本文將介紹如何在 Vue 3 中使用不同的方法來(lái)獲取子組件的 DOM 元素,需要的朋友可以參考下
    2023-08-08
  • vue實(shí)現(xiàn)多欄布局拖拽

    vue實(shí)現(xiàn)多欄布局拖拽

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)多欄布局拖拽,改變盒子的寬度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue 自定義指令功能完整實(shí)例

    Vue 自定義指令功能完整實(shí)例

    這篇文章主要介紹了Vue 自定義指令功能,結(jié)合完整實(shí)例形式分析了vue.js自定義指令相關(guān)實(shí)現(xiàn)與使用操作技巧,需要的朋友可以參考下
    2019-09-09
  • vue項(xiàng)目適配大屏端的方法示例

    vue項(xiàng)目適配大屏端的方法示例

    眾所周知在vue移動(dòng)端h5頁(yè)面當(dāng)中,適配是經(jīng)常會(huì)遇到的問(wèn)題,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目適配大屏端的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • vue excel上傳預(yù)覽和table內(nèi)容下載到excel文件中

    vue excel上傳預(yù)覽和table內(nèi)容下載到excel文件中

    這篇文章主要介紹了vue excel上傳預(yù)覽和table內(nèi)容下載到excel文件中,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論

富宁县| 达拉特旗| 康马县| 松潘县| 遂昌县| 浦江县| 沙洋县| 遂昌县| 黔西县| 醴陵市| 开原市| 勐海县| 涿鹿县| 大悟县| 阿克| 眉山市| 松原市| 施秉县| 湖州市| 双江| 卓资县| 洪洞县| 榆树市| 四子王旗| 孝昌县| 福州市| 即墨市| 盐源县| 牟定县| 白玉县| 新沂市| 北辰区| 渭源县| 顺平县| 乐山市| 长垣县| 曲沃县| 湘阴县| 林甸县| 荥经县| 奇台县|