認識Vue裡的模板引用

更新 發佈閱讀 7 分鐘

那我們先來了解什麼是認識Vue裡的模板引用?

模板引用的意思是:允許我們在Vue的組件的模板中標記一個DOM元素或子組件,並在setup選項中去訪問它。

我們可以說白一點就是:我們在template 裡先幫某個 DOM 元素或子元件貼上一個「名字」,等畫面真的被渲染出來後,就可以在 <script setup> 裡用這個名字拿到它。


我們來看基本用法:

<script setup> 
import { ref, onMounted } from 'vue'
// ​這邊onMounted的意思是:等畫面真的渲染好了,我再做這件事。
// ​這邊import ... from 'vue'的意思:從 Vue 這個套件裡面,把工具拿出來用。
// ​ref:做「響應式資料」要用的容器
// ​onMounted:註冊「畫面渲染完成後要做的事」

// 宣告一個 ref 來存放元素引用
const inputRef = ref(null)

onMounted(() => {
// 元件掛載後,inputRef.value 會是 DOM 元素
// onMounted在做的事情是等畫面已經渲染完成
// 在來使用inputRef.value
inputRef.value.focus()
// inputRef.value 會是那個 input 的 DOM 元素
// 所以可以呼叫它的 focus() 方法

})

</script>

<template>

// <!-- ref 屬性的值對應到變數名稱 -->

<input ref="inputRef" type="text">
// 使用input來放進inputRef.value
// 也就是說inputRef.value = 那個 input 的 DOM 元素

</template>

這邊只有在元件掛載後(onMounted)ref 才會被賦值。在 onMounted 之前ref 的值是 null。


那它可以用來比如說操作原生DOM、存取多個元素等等的地方。


那來看範例:

操作原生DOM範例:

<template>
<input ref="inputRef" type="text" placeholder="输入内容">
// 在template 裡的 input 用 ref="inputRef" 取名
// 而渲染完成之後Vue 會把「這個 input 的 DOM 元素」放進 inputRef.value
<button @click="focusInput">聚焦输入框</button>
// 去綁定函式focusInput,每點擊一次就呼叫一次
</template>

<script setup>
import { ref } from 'vue';

const inputRef = ref(null);
// 使用一個變數​inputRef,要來裝input 的 DOM 元素
// 一開始是​null,因為畫面還沒渲染出來

const focusInput = () => {
// 宣一個函式​focusInput,每案一次按鈕就會呼叫它一次
inputRef.value.focus();
// inputRef.value:那個 input 的 DOM 元素
};
</script>


使用ref存取多個元素範例:

<template>
<div v-for="(item, index) in list" :key="index" ref="itemRefs">
{{ item }}
// 使用v-for,會跑list陣列每個元素,產生多個div
// 而ref="itemRefs":每一個 div 都標記同一個 ref 名稱
</div>
<button @click="logElements">查看所有元素</button>
// 去綁定函式logElements,每點擊一次就呼叫一次
</template>

<script setup>
import { ref, onMounted } from 'vue';

const list = ref(["Vue", "React", "Angular"]);
const itemRefs = ref([]);
// 這邊先使用變數 itemRefs,裝一個空陣列,要用來裝多個DOM元素

onMounted(() => {
// ​onMounted來做畫面渲染完成後再印
console.log(itemRefs.value);
// 印出itemRefs.value,裡面的元素
});

const logElements = () => {
// 使用變數​logElements,來讓迴圈跑過每個 div DOM 元素
// 並且印出每一個div的文字​
itemRefs.value.forEach(el => console.log(el.textContent));
};
</script>


存取setup()之外的數據:

<script setup>
import { getCurrentInstance, onMounted } from 'vue';

onMounted(() => {
// ​onMounted:等元件渲染完成
const instance = getCurrentInstance();
// getCurrentInstance()會做的事情是,取得目前元件的「內部實例物件」
console.log(instance.refs);
// 去拿取template裡面的ref
});
</script>

<template>
<input ref="inputRef" type="text">
</template>


留言
avatar-img
睿哲楊的沙龍
2會員
18內容數
睿哲楊的沙龍的其他內容
2026/02/05
在開始前我們先講解響應式函數,響應式函數就是 import { ref, watch } from 'vue' const count = ref(0) 1 2 3 4 宣告一個常數,可以讓我們後續使用。 為這個常數賦予名稱。 響應式函數並接收一個參數初始值
2026/02/05
在開始前我們先講解響應式函數,響應式函數就是 import { ref, watch } from 'vue' const count = ref(0) 1 2 3 4 宣告一個常數,可以讓我們後續使用。 為這個常數賦予名稱。 響應式函數並接收一個參數初始值
2026/01/15
npm: npm是一個 Node.js 預設的 JavaScript 套件管理工具,它幫助開發者下載、安裝、管理和分享專案所需的程式碼套件,也可想像成JavaScript 的「套件管理員」。 主要在做: 安裝套件(例如 axios、react…) 管理版本(你裝的是哪一版、依賴哪些東西)
2026/01/15
npm: npm是一個 Node.js 預設的 JavaScript 套件管理工具,它幫助開發者下載、安裝、管理和分享專案所需的程式碼套件,也可想像成JavaScript 的「套件管理員」。 主要在做: 安裝套件(例如 axios、react…) 管理版本(你裝的是哪一版、依賴哪些東西)
2026/01/15
首先callback hell callback hell叫做'回呼地獄',是指在處理多個相依的非同步操作時,過度巢狀使用回呼函數(callback functions)導致程式碼變得難以閱讀、理解和維護,形成金字塔形的縮排結構,也稱作「金字塔地獄」(Pyramid of Doom)。 例如:
2026/01/15
首先callback hell callback hell叫做'回呼地獄',是指在處理多個相依的非同步操作時,過度巢狀使用回呼函數(callback functions)導致程式碼變得難以閱讀、理解和維護,形成金字塔形的縮排結構,也稱作「金字塔地獄」(Pyramid of Doom)。 例如:
看更多
你可能也想看
Thumbnail
創作的路上,除了產出好內容,認識著作權、並保護自己的創作權益,也是非常重要的一環。成長學院將分享一系列與著作權、IP 相關的內容,幫助創作者們建立基本觀念與認知,持續成長。
Thumbnail
創作的路上,除了產出好內容,認識著作權、並保護自己的創作權益,也是非常重要的一環。成長學院將分享一系列與著作權、IP 相關的內容,幫助創作者們建立基本觀念與認知,持續成長。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
教學主題:認識乘法(一)~乘法的意義 教材版本:適用於康軒、南一、翰林各版本(可微調) 教學時間:40分鐘 一、教學目標 學生能夠: 1. 理解乘法是「連加」的表現方式。 2. 以「幾個幾」的方式解釋乘法意義。 3. 讀懂並書寫基本的乘法算式(如:3×2)。 4. 利
Thumbnail
教學主題:認識乘法(一)~乘法的意義 教材版本:適用於康軒、南一、翰林各版本(可微調) 教學時間:40分鐘 一、教學目標 學生能夠: 1. 理解乘法是「連加」的表現方式。 2. 以「幾個幾」的方式解釋乘法意義。 3. 讀懂並書寫基本的乘法算式(如:3×2)。 4. 利
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
在AI浪潮下,009819 中信美國數據中心及電力ETF 直接卡位算力與電力雙主軸,等於掌握AI最核心基建。2008從 Apple Inc. 與 iPhone 帶動供應鏈,到如今AI崛起,主線已由應用端轉向底層。AI發展離不開算力與電力支撐,009819的價值,在於押中「沒有它不行」的核心資產。
Thumbnail
在AI浪潮下,009819 中信美國數據中心及電力ETF 直接卡位算力與電力雙主軸,等於掌握AI最核心基建。2008從 Apple Inc. 與 iPhone 帶動供應鏈,到如今AI崛起,主線已由應用端轉向底層。AI發展離不開算力與電力支撐,009819的價值,在於押中「沒有它不行」的核心資產。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
在台灣,有不可亂撿地上紅包的忌諱,否則就得和女鬼冥婚;而在古代,也有不可亂撿地上財物的忌諱,因為那恐怕是歹毒的巫蠱術,你不用牠來害人,牠就會害你。至於狠人林巡檢,是如何破解的呢? 這則故事,全篇沒有一字道德教訓,卻引導讀者深切理解「廉」與「恥」的涵義,比起顧炎武的〈廉恥〉更具可讀性與教育意義。
Thumbnail
在台灣,有不可亂撿地上紅包的忌諱,否則就得和女鬼冥婚;而在古代,也有不可亂撿地上財物的忌諱,因為那恐怕是歹毒的巫蠱術,你不用牠來害人,牠就會害你。至於狠人林巡檢,是如何破解的呢? 這則故事,全篇沒有一字道德教訓,卻引導讀者深切理解「廉」與「恥」的涵義,比起顧炎武的〈廉恥〉更具可讀性與教育意義。
Thumbnail
我請學生舉一則說謊事件為例,填寫〈說謊事件分析表〉。首先,簡單敘述事情經過,然後判斷這是屬於說謊事件圖表中的哪一項。有趣的是,明明都是說謊,但當學生準確將說謊事件歸類後,反而可以輕鬆找到避免說謊的方法。最後,根據填寫好的表格寫成一篇解析謊言的議論文,不但論據可靠,論點也極有深度。
Thumbnail
我請學生舉一則說謊事件為例,填寫〈說謊事件分析表〉。首先,簡單敘述事情經過,然後判斷這是屬於說謊事件圖表中的哪一項。有趣的是,明明都是說謊,但當學生準確將說謊事件歸類後,反而可以輕鬆找到避免說謊的方法。最後,根據填寫好的表格寫成一篇解析謊言的議論文,不但論據可靠,論點也極有深度。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News