vue中ref的用法

vue給我們提供一個(gè)操作dom的屬性慈缔,ref羡亩。綁定在dom元素上時(shí),用起來(lái)與id差不多,通過(guò)this.$refs來(lái)調(diào)用:

<div ref="test">test</div>
console.log(this.$refs.test)
image.png

看到打印出來(lái)就是綁定的dom對(duì)象陵刹,可以用來(lái)執(zhí)行一些dom操作,比如操作樣式,獲取屬性等:

let testDom = this.$refs.test
testDom.style.height = '200px'
testDom.style.background = 'red'
console.log(testDom.clientHeight)

可以看到如果綁定在普通的dom元素上衰琐,與id用法基本一樣也糊,那肯定還有別的用法,比如 循環(huán)渲染:

//簡(jiǎn)單的數(shù)組:
    list:[1,2,3,4]
//綁定在循環(huán)渲染上
    <ul>
      <li v-for="(item,index) in list" :key="index" ref="list">
        {{index}}--{{item}}
      </li>
    </ul>
//打印看一下這個(gè)ref="list"是什么
    console.log(this.$refs.list)
image.png

可以看到是個(gè)數(shù)組羡宙,也很好理解狸剃,數(shù)組的每一項(xiàng)就是每個(gè)li元素。

  • ref除了這兩個(gè)用法狗热,還有另一種用法钞馁,綁定在組件標(biāo)簽上:
    比如說(shuō)我現(xiàn)在有個(gè)組件test:
<template>
  <div style="height:200px;background:red;"></div>
</template>

<script>
export default {
  name:'test',
  data() {
    return{
      data:1
    }
  },
  methods: {
    _alert() {
      alert('test-ref')
    }
  }
}
</script>

然后我把別的地方引用它,并綁定ref:

<test ref="test"></test>
//打印出來(lái)看看這次是什么
console.log(this.$refs.test)
image.png

可以看到這次和我們之前綁定在dom元素上有很大的不同匿刮,這次獲取到的是一個(gè)VueComponent對(duì)象僧凰,里面有這個(gè)組件的各個(gè)屬性,這些屬性里面有一個(gè)$el熟丸,這就是dom對(duì)象训措,就是和我們直接綁定在dom元素上獲取的一樣:

let testDom = this.$refs.test.$el
console.log(testDom.clientHeight)  //打印出來(lái)就是設(shè)置的200

這個(gè)$el屬性,而且我們可以看到里面還有我們?cè)O(shè)置在data里面的變量光羞,我們是可以直接通過(guò)這種ref的方式去修改绩鸣,它就等于拿到那個(gè)組件的this,可以直接調(diào)用纱兑,不僅是data里面的變量呀闻,還有methods里面的方法:

//調(diào)用在之前組件里面定義的_alert()方法
this.$refs.test._alert()
image.png

這種用法特別適合在用ui框架的組件的時(shí)候,ui框架給我們提供了很多組件的方法潜慎,就是要通過(guò)這個(gè)ref去調(diào)用,比如說(shuō)element-ui的樹(shù)形組件:


image.png

還有許多总珠,用到外部框架組件的時(shí)候,就需要使用這種方法勘纯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末局服,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驳遵,更是在濱河造成了極大的恐慌淫奔,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堤结,死亡現(xiàn)場(chǎng)離奇詭異唆迁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)竞穷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)唐责,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人瘾带,你說(shuō)我怎么就攤上這事鼠哥。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵朴恳,是天一觀的道長(zhǎng)抄罕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)于颖,這世上最難降的妖魔是什么呆贿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮森渐,結(jié)果婚禮上做入,老公的妹妹穿的比我還像新娘。我一直安慰自己同衣,他們只是感情好母蛛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著乳怎,像睡著了一般彩郊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚪缀,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天秫逝,我揣著相機(jī)與錄音,去河邊找鬼询枚。 笑死违帆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的金蜀。 我是一名探鬼主播刷后,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼渊抄!你這毒婦竟也來(lái)了尝胆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤护桦,失蹤者是張志新(化名)和其女友劉穎含衔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體二庵,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贪染,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了催享。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杭隙。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖因妙,靈堂內(nèi)的尸體忽然破棺而出痰憎,到底是詐尸還是另有隱情票髓,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布信殊,位于F島的核電站炬称,受9級(jí)特大地震影響汁果,放射性物質(zhì)發(fā)生泄漏涡拘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一据德、第九天 我趴在偏房一處隱蔽的房頂上張望鳄乏。 院中可真熱鬧,春花似錦棘利、人聲如沸橱野。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)水援。三九已至,卻和暖如春茅郎,著一層夾襖步出監(jiān)牢的瞬間蜗元,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工系冗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奕扣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓掌敬,卻偏偏與公主長(zhǎng)得像惯豆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奔害,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一楷兽、了解Vue.js 1.1.1 Vue.js是什么? 簡(jiǎn)單小巧华临、漸進(jìn)式拄养、功能強(qiáng)大的技術(shù)棧 1.1.2 為什么學(xué)習(xí)...
    蔡華鵬閱讀 3,313評(píng)論 0 3
  • 一:什么是閉包?閉包的用處银舱? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)瘪匿。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,523評(píng)論 1 52
  • 基本用法 一寻馏、vuejs簡(jiǎn)介 是一個(gè)構(gòu)建用戶界面的框架 是一個(gè)輕量級(jí)的MVVM(Model-View-ViewMo...
    深度剖析JavaScript閱讀 18,244評(píng)論 0 8
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,202評(píng)論 0 6
  • Vue 3.0 性能提升主要是通過(guò)哪幾方面體現(xiàn)的棋弥? vue2在初始化的時(shí)候,對(duì)data中的每個(gè)屬性使用define...
    Smallbore閱讀 1,157評(píng)論 0 8