Vue3中refs使用方法舉例
前言
在 Vue 3 中,refs 的用法與 Vue 2 相比有了一些改進,但基本概念仍然相同:通過 ref 來引用模板中的元素或組件實例,然后在組件的方法或生命周期鉤子中通過 this.$refs 來訪問這些引用。
然而,在 Vue 3 的 Composition API 中,我們更傾向于使用 ref 函數(shù)來創(chuàng)建響應(yīng)式引用,而不是使用 this.$refs。這種方式使代碼更加靈活,并且更易于在組合式函數(shù)中使用。
下面我將分別展示 Vue 3 中 Options API 和 Composition API 的 refs 寫法。
使用 Options API 選項式
在 Options API 中,refs 的使用與 Vue 2 類似:
<template>
<div ref="myDiv">Hello, Vue 3!</div>
<button ref="myButton" @click="handleClick">Click me</button>
</template>
<script>
export default {
mounted() {
// 通過 this.$refs 訪問元素
const myDiv = this.$refs.myDiv;
const myButton = this.$refs.myButton;
console.log(myDiv); // 輸出 div DOM 元素
console.log(myButton); // 輸出 button DOM 元素
},
methods: {
handleClick() {
const myButton = this.$refs.myButton;
// 在這里可以對 myButton 進行操作
}
}
}
</script>
使用 Composition API 組合式
在 Composition API 中,你會使用 ref 函數(shù)來創(chuàng)建響應(yīng)式引用,并在 setup 函數(shù)中訪問它們:
<template>
<div ref="myDiv">Hello, Vue 3!</div>
<button @click="handleClick">Click me</button>
</template>
<script>
import { ref, onMounted } from 'vue';
export default {
setup() {
// 使用 ref 函數(shù)創(chuàng)建響應(yīng)式引用
const myDiv = ref(null);
// 生命周期鉤子在 Composition API 中通過函數(shù)實現(xiàn)
onMounted(() => {
console.log(myDiv.value); // 輸出 div DOM 元素
});
// 方法也作為函數(shù)返回
const handleClick = () => {
console.log(myDiv.value); // 輸出 div DOM 元素
// 在這里可以對 myDiv.value 進行操作
};
// 返回需要在模板中使用的響應(yīng)式引用和方法
return {
myDiv,
handleClick
};
}
}
</script>
在 Composition API 的例子中,我們使用了 ref 函數(shù)來創(chuàng)建一個響應(yīng)式引用 myDiv,并將其綁定到模板中的 div 元素上。在 setup 函數(shù)中,我們可以直接訪問 myDiv.value 來獲取對應(yīng)的 DOM 元素。注意,由于 ref 創(chuàng)建的是一個包裝對象,因此我們需要通過 .value 來訪問或修改其值。
onMounted 是 Vue 3 的 Composition API 提供的一個生命周期鉤子,它等價于 Options API 中的 mounted 鉤子。在 onMounted 中,我們可以安全地訪問 DOM 元素,因為此時組件已經(jīng)被掛載到 DOM 中了。
最后,setup 函數(shù)返回一個對象,其中包含了需要在模板中使用的響應(yīng)式引用和方法。這樣,模板中的 ref 就可以與 setup 中定義的響應(yīng)式引用關(guān)聯(lián)起來。
總結(jié)
到此這篇關(guān)于Vue3中refs使用方法的文章就介紹到這了,更多相關(guān)Vue3 refs使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端記錄輸入框的歷史輸入記錄實現(xiàn)步驟(輸入框數(shù)據(jù)記憶功能)
這篇文章主要介紹了如何使用localStorage來記錄每個輸入框的歷史輸入記錄,并在用戶輸入時動態(tài)更新這些記錄,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-03-03
基于vue-cli創(chuàng)建的項目的目錄結(jié)構(gòu)及說明介紹
下面小編就為大家分享一篇基于vue-cli創(chuàng)建的項目的目錄結(jié)構(gòu)及說明介紹,具有很好的參考價值,希望對大家有所幫助2017-11-11
如何寫好一個vue組件,老夫的一年經(jīng)驗全在這了(推薦)
這篇文章主要介紹了如何寫好一個vue組件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
如何解決ERROR Invalid options in vue.config.
這篇文章主要介紹了如何解決ERROR Invalid options in vue.config.js:“resolve“ is not allowed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
Vue+EleMentUI實現(xiàn)el-table-colum表格select下拉框可編輯功能實例
這篇文章主要給大家介紹了關(guān)于Vue+EleMentUI實現(xiàn)el-table-colum表格select下拉框可編輯功能的相關(guān)資料,element-UI表格的使用相信大家都不陌生,文中給出了詳細的代碼示例,需要的朋友可以參考下2023-07-07
Vue2.0+Vux搭建一個完整的移動webApp項目的示例
這篇文章主要介紹了Vue2.0+Vux搭建一個完整的移動webApp項目的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03

