VUE中$refs的基本用法舉例
ref 有三種用法:
1、ref 加在普通的元素上,用this.$refs.(ref值) 獲取到的是dom元素。
2、ref 加在子組件上,用this.$refs.(ref值) 獲取到的是組件實(shí)例,可以使用組件的所有方法。
在使用方法的時候直接this.$refs.(ref值).方法() 就可以使用了。
3、如何利用 v-for 和 ref 獲取一組數(shù)組或者dom 節(jié)點(diǎn)。
第一種用法舉例
<template>
<div>
<h2>refs</h2>
<input ref="inp" type="text" />
</div>
</template>
<script>
export default {
//ref 需要在dom渲染完成后才會有,在使用的時候確保dom已經(jīng)渲染完成。比如在生命周期 mounted(){} 鉤子中調(diào)用,或者在 this.$nextTick(()=>{}) 中調(diào)用。
created() {
// 在生命周期created中可以查詢到變量,但是dom還未渲染完成,
需要借助this.$nextTick(()=>{})
this.$nextTick(() => {
console.log(this.$refs.inp);
});
},
};
</script>應(yīng)注意的坑:
1、如果通過v-for 遍歷想加不同的ref時記得加 :號,
即 :ref =某變量 ;這點(diǎn)和其他屬性一樣,如果是固定值就不需要加 :號,如果是變量記得加 :號。
(加冒號的,說明后面的是一個變量或者表達(dá)式;沒加冒號的后面就是對應(yīng)的字符串常量
(String))
2、通過 :ref =某變量 添加ref(即加了:號) ,如果想獲取該ref時需要加 [0],如
this.$refs[refsArrayItem] [0];如果不是:ref =某變量的方式而是 ref =某字符串時則不需要加,如
this.$refs[refsArrayItem]。
1、ref 需要在dom渲染完成后才會有,在使用的時候確保dom已經(jīng)渲染完成。比如在生命周期
mounted(){} 鉤子中調(diào)用,或者在 this.$nextTick(()=>{}) 中調(diào)用。
2、如果ref 是循環(huán)出來的,有多個重名,那么ref的值會是一個數(shù)組 ,此時要拿到單個的ref 只需要
循環(huán)就可以了。
擴(kuò)展知識點(diǎn)
vue---$refs的用法【詳解】
在用VUE開發(fā)項目的時候,經(jīng)常會使用到$refs來操作DOM,那么它究竟該怎么使用呢?
首先,平時在用JS開發(fā)項目的時候,獲取DOM元素,使用的是 document.querySelector("#id") 來獲取DOM元素,并且可以操作或獲取其屬性,例如獲取 input 的 value 值。
如果是使用VUE,可以使用 ref 來進(jìn)行綁定,就不需要獲取DOM節(jié)點(diǎn)了,然后通過 $refs 來進(jìn)行操作或獲取屬性。
例如使用 JavaScript 里面通過 this.$refs.input1 去調(diào)用,這樣的做法實(shí)際上是訪問VUE虛擬出來的DOM,可以有效減少獲取/操作DOM節(jié)點(diǎn)的性能消耗。
示例:
<div id="app"> <input type="text" ref="input1" /> <button @click="add">添加</button> </div>
代碼:
add:function(){
// this.$refs[input1].value = "test"; // 可以用運(yùn)算符去訪問
this.$refs.input1.value = "test"; // 有效減少獲取dom節(jié)點(diǎn)的性能消耗
}這里的 $refs 相當(dāng)于是一個通用選擇器,然后通過 key 去訪問存儲的對象。
到此這篇關(guān)于VUE中$refs的基本用法的文章就介紹到這了,更多相關(guān)VUE中$refs用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項目中按需引入element-ui的正確實(shí)現(xiàn)方法
這篇文章主要介紹了vue項目中按需引入element-ui的正確實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
vue element table中自定義一些input的驗證操作
這篇文章主要介紹了vue element table中自定義一些input的驗證操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
基于Vue3實(shí)現(xiàn)前端埋點(diǎn)上報插件并打包發(fā)布到npm的詳細(xì)過程
這篇文章主要介紹了基于Vue3實(shí)現(xiàn)一個前端埋點(diǎn)上報插件并打包發(fā)布到npm,本項目采用pnpm進(jìn)行Monorepo環(huán)境搭建,因為未來這個項目可能會加入更多的工具包,需要的朋友可以參考下2022-10-10
在同一個Vue項目中的不同vue和HTML頁面之間進(jìn)行跳轉(zhuǎn)方式
這篇文章主要介紹了在同一個Vue項目中的不同vue和HTML頁面之間進(jìn)行跳轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue中計算屬性和監(jiān)聽屬性及數(shù)據(jù)的響應(yīng)式更新和依賴收集基本原理講解
computed是vue的配置選項,它的值是一個對象,其中可定義多個計算屬性,每個計算屬性就是一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計算屬性computed的詳細(xì)講解,需要的朋友可以參考下2023-03-03
Vue使用sign-canvas實(shí)現(xiàn)在線手寫簽名的實(shí)例
sign-canvas?一個基于?canvas?開發(fā),封裝于?Vue?組件的通用手寫簽名板(電子簽名板),支持?pc?端和移動端,本文給大家分享Vue使用sign-canvas實(shí)現(xiàn)在線手寫簽名,感興趣的朋友一起看看吧2022-05-05
Ant Design Vue resetFields表單重置不生效問題及解決
這篇文章主要介紹了Ant Design Vue resetFields 表單重置不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

