vue3標簽中的ref屬性詳解及如何使用$refs獲取元素
更新時間:2024年11月28日 10:16:46 作者:Yunmay
這篇文章主要給大家介紹了關于vue3標簽中的ref屬性詳解及如何使用$refs獲取元素的相關資料,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
- 用在普通DOM標簽上,獲取的是DOM節(jié)點。
- 用在組件標簽上,獲取的是組件實例對象。
用在普通DOM標簽中
獲取dom元素方法一:
- 在需要獲取的元素標簽上添加ref屬性
- 創(chuàng)建ref對象,存儲ref屬性標記的內容
- 通過ref上的value屬性即可獲取當前dom元素
<template> <p>{{ person.name }}</p> <!--1.在標簽上寫上ref屬性--> <div ref="msg">{{ person.age }}</div> <p>{{ person.gender }}</p> <button @click="getEle">獲取元素</button> </template> <script setup> import { ref, reactive, computed, getCurrentInstance, onMounted } from "vue"; const person = reactive({ name: "neko", age: 18, gender: "女", }); //2.創(chuàng)建一個引用變量去存儲對div標簽的引用 let msg = ref(); //3.獲取元素 const getEle = () => { console.log(msg.value); // <div>18</div> }; </script>
獲取dom元素方法二:
getCurrentInstance():獲取當前組件實例
- 在需要獲取的元素標簽上添加ref屬性
- 通過getCurrentInstance解構出proxy
- 通過proxy.$refs.xxx即可獲取當前dom元素
<template> <p>{{ person.name }}</p> <!--1.在標簽上寫上ref屬性--> <div ref="msg">{{ person.age }}</div> <p>{{ person.gender }}</p> <button @click="getEle">獲取元素</button> </template> <script setup> import { ref, reactive, computed, getCurrentInstance, onMounted } from "vue"; //2.通過getCurrentInstance解構出proxy const { proxy } = getCurrentInstance(); const person = reactive({ name: "neko", age: 18, gender: "女", }); //3.獲取元素 const getEle = () => { console.log(proxy.$refs.msg); // <div>18</div> }; </script>
用在組件標簽上
defineExpose作用:向外暴露屬性
<!-- 父組件 --> <template> <Demo ref="demoRef"></Demo> </template> <script setup> import { ref, onMounted } from "vue"; import Demo from "./components/Demo.vue"; let demoRef = ref(); onMounted(() => { console.log(demoRef.value); // 訪問子組件Demo中的屬性 }); </script> <!-- 子組件 --> <template> <p>{{ person.name }}</p> <div>{{ person.age }}</div> <p>{{ person.gender }}</p> </template> <script setup> import { ref, reactive, computed, getCurrentInstance, onMounted } from "vue"; const person = reactive({ name: "neko", age: 18, gender: "女", }); let num1 = ref(0); let num2 = ref(1); let num3 = ref(2); <!-- 使用defineExpose將組件中的數(shù)據(jù)交給外部,這樣父組件中的demoRef.value才可以訪問到如下數(shù)據(jù) --> defineExpose({ num1, num2, num3, person }); </script>
總結
到此這篇關于vue3標簽中的ref屬性詳解及如何使用$refs獲取元素的文章就介紹到這了,更多相關vue3 $refs獲取元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue實現(xiàn)圖片下載點擊按鈕彈出本地窗口選擇自定義保存路徑功能
vue前端實現(xiàn)前端下載,并實現(xiàn)點擊按鈕彈出本地窗口,選擇自定義保存路徑,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-12-12vue前端自適應布局實現(xiàn)教程(一步到位所有自適應)
?自適應布局是一種根據(jù)不同的設備屏幕分辨率進行布局的方式,它為不同的屏幕分辨率定義了不同的布局,下面這篇文章主要給大家介紹了關于vue前端自適應布局實現(xiàn)的相關資料,需要的朋友可以參考下2024-08-08vue中使用iframe嵌入網(wǎng)頁,頁面可自適應問題
這篇文章主要介紹了vue中使用iframe嵌入網(wǎng)頁,頁面可自適應問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09Vue為何棄用Ajax,選擇Axios?ajax與axios的區(qū)別?
ajax技術實現(xiàn)了局部數(shù)據(jù)的刷新,axios實現(xiàn)了對ajax的封裝;axios有的ajax都有,ajax有的axios不一定有??偨Y一句話就是axios是ajax,ajax不止axios。2023-01-01vscode 使用Prettier插件格式化配置使用代碼詳解
這篇文章主要介紹了vscode 使用Prettier插件格式化配置使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08