最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中ref標(biāo)簽屬性和$ref的關(guān)系解讀

 更新時(shí)間:2023年07月18日 17:02:26   作者:考拉菜鳥  
這篇文章主要介紹了vue中ref標(biāo)簽屬性和$ref的關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue ref標(biāo)簽屬性和$ref關(guān)系

javascript原生語法和jquery都是屬于操作DOM節(jié)點(diǎn)元素,去實(shí)現(xiàn)功能的.

Vue給我們提供了一個(gè)專門用來獲取DOM節(jié)點(diǎn)的方法,使用元素的ref屬性,使用起來非常方便。

(這只是用于偶爾vue需要操作節(jié)點(diǎn)時(shí)候才使用)

vue的ref屬性

ref 被用來給元素或子組件注冊(cè)引用信息。

引用信息將會(huì)注冊(cè)在父組件的 $refs 對(duì)象上。

如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子組件上,引用就指向組件實(shí)例:

<!-- `vm.$refs.p` will be the DOM node -->
<p ref="p">hello</p>
<!-- `vm.$refs.child` will be the child component instance -->
<child-component ref="child"></child-component>

當(dāng) v-for 用于元素或組件的時(shí)候,引用信息將是包含 DOM 節(jié)點(diǎn)或組件實(shí)例的數(shù)組。

關(guān)于 ref 注冊(cè)時(shí)間的重要說明:因?yàn)?ref 本身是作為渲染結(jié)果被創(chuàng)建的,在初始渲染的時(shí)候你不能訪問它們 - 它們還不存在!$refs 也不是響應(yīng)式的,因此你不應(yīng)該試圖用它在模板中做數(shù)據(jù)綁定。

vm.$refs

一個(gè)對(duì)象,持有 注冊(cè)過 ref 特性 的所有 DOM 元素和組件實(shí)例。

以上是官方文檔里面的內(nèi)容,總結(jié)為下面的:

  • 給要獲取的元素節(jié)點(diǎn)添加ref屬性,使用有意義的駝峰命名
  • 通過vue實(shí)例.$refs.屬性名即可獲取標(biāo)記的元素,我們?cè)趍ounted鉤子函數(shù)中調(diào)用可以直接使用this指向當(dāng)前vue實(shí)例,這個(gè)才是vue推薦的元素獲取方式
  • 如果ref重名后面的會(huì)把前面的覆蓋
  • 元素使用v-for,返回dom節(jié)點(diǎn)數(shù)組

下面舉例驗(yàn)證

<div id="app">
        <div>
            <h2 ref="name1">這是name1節(jié)點(diǎn)元素</h2>
            <p ref="name2">這是name2節(jié)點(diǎn)元素</p>
        </div>
 </div>
 mounted() {
                console.log(this);   //vue實(shí)例對(duì)象
                console.log(this.$refs.name1);   //上面的h2標(biāo)簽元素
                console.log(this.$refs.name1.textContent);  //標(biāo)簽內(nèi)容
                console.log(this.$refs.name2);  //上面的p標(biāo)簽元素                
            },

在這里插入圖片描述

如果ref值重復(fù)時(shí),會(huì)打印出哪個(gè)DOM節(jié)點(diǎn)? 根據(jù)上面的知識(shí)點(diǎn),我們知道,后面的會(huì)覆蓋前面的

下面驗(yàn)證一下:

     <div id="app">       
        <h2 ref="name1">這是name1節(jié)點(diǎn)元素</h2>
        <p ref="name2">這是name2節(jié)點(diǎn)元素</p>
   		 <span ref="name1">這是ref的name1值重復(fù)的節(jié)點(diǎn)元素</span><br>
   		 <i ref="name2">這是ref的name2值重復(fù)的節(jié)點(diǎn)元素</i><br>
	  </div>	  

一樣在代碼中執(zhí)行以下命令

mounted() {
                console.log(this);   //vue實(shí)例對(duì)象
                console.log(this.$refs.name1);   //上面的h2標(biāo)簽元素
                console.log(this.$refs.name1.textContent);  //標(biāo)簽內(nèi)容
                console.log(this.$refs.name2);  //上面的p標(biāo)簽元素                
            },

在這里插入圖片描述

打印結(jié)果是span和i標(biāo)簽元素,覆蓋了前面的h2和p標(biāo)簽

如果把ref值設(shè)置ul標(biāo)簽

<ul  ref="veg">
   <li>水果1</li>
   <li>水果2</li>
   <li>水果3</li>
</ul>

執(zhí)行

console.log(this.$refs.veg);

在這里插入圖片描述

直接打印出整個(gè)DOM對(duì)象

當(dāng)v-for用于元素和組件的時(shí)候,引用信息將是包含 DOM 節(jié)點(diǎn)或組件實(shí)例的數(shù)組。

 <div id="app">
        <ul>
            <li ref="fruits" v-for="(item,index) in arr" :key="index">水果{{item}}</li>
        </ul>
   </div>
 const app = new Vue({
            el: '#app',
            mounted() {               
                console.log(this.$refs.fruits); //打印的是li標(biāo)簽數(shù)組
                console.log(this.$refs.fruits[1].textContent);
            },
            data: {
                arr: [1, 2, 3, 4, 5],
            },
        });

運(yùn)行

console.log(this.$refs.fruits);

以后得到的數(shù)組

在這里插入圖片描述

新手對(duì)vue中特殊的標(biāo)簽屬性ref和key的理解

ref屬性

  • 定義:用來給元素或子組件注冊(cè)引用信息
  • 理解:類似id(原生js中id的替代者),給元素或者組件打標(biāo)識(shí)

作用

1、應(yīng)用在html標(biāo)簽上,是用來獲取真實(shí)的DOM元素(相當(dāng)于原生的document.getElementById("xxx"))

2、應(yīng)用在組件標(biāo)簽上,得到的是組件的實(shí)例對(duì)象

使用方式

第一步:打標(biāo)識(shí)

<h1 ref="xxx">...</h1>
<School ref="xxx"></School>

第二步:獲取

this.$refs.xxx

ref屬性與原生的id屬性的區(qū)別

1、添加在html標(biāo)簽上

兩者結(jié)果相同,都是得到真實(shí)的DOM元素

2、添加到組件上

  • ref屬性獲取的是組件實(shí)例對(duì)象
  • id屬性相當(dāng)于給組件最外層容器添加了id屬性,得到的是最外層包裹著的所有真實(shí)DOM元素

key屬性

理解:給虛擬DOM對(duì)象添加標(biāo)識(shí),相當(dāng)于給每個(gè)元素添加一個(gè)獨(dú)一無二的id身份

作用:當(dāng)數(shù)據(jù)發(fā)生變化時(shí),Vue會(huì)根據(jù)新數(shù)據(jù)生成新的虛擬DOM,隨后Vue進(jìn)行新舊虛擬DOM的差異對(duì)比,比較規(guī)則如下:

對(duì)比規(guī)則

1、舊虛擬DOM中找到與新虛擬DOM相同的key

  • ① 若虛擬DOM中的內(nèi)容沒有變化,那么直接使用之前的真實(shí)DOM
  • ② 若虛擬DOM中的內(nèi)容變化了,則生成新的真實(shí)DOM,隨后替換掉頁面之前的DOM

2、新虛擬DOM中未找到與舊虛擬DOM相同的key

創(chuàng)建真實(shí)的DOM,隨后渲染到頁面

用index作為key可能引發(fā)的問題

1、若對(duì)數(shù)據(jù)進(jìn)行:逆序添加和刪除等破壞數(shù)據(jù)順序的操作

會(huì)產(chǎn)生沒有必須的真實(shí)DOM更新,頁面效果沒問題,但效率低

2、若結(jié)構(gòu)中包含輸入類的DOM

會(huì)產(chǎn)生錯(cuò)誤的DOM更新,頁面出現(xiàn)問題

開發(fā)中如何選擇key?

  • ① 如果數(shù)據(jù)有唯一標(biāo)識(shí),比如id,身份證號(hào),學(xué)號(hào)等,可以直接使用數(shù)據(jù)的唯一標(biāo)識(shí)
  • ② 如果不存在逆序等破壞順序的操作,僅用于渲染展示,那么使用index作為key值沒有問題

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue時(shí)間戳和時(shí)間的相互轉(zhuǎn)換方式

    vue時(shí)間戳和時(shí)間的相互轉(zhuǎn)換方式

    本文通過示例代碼介紹了vue時(shí)間戳和時(shí)間的相互轉(zhuǎn)換方式,通過場景分析介紹了vue3使用組合式api將時(shí)間戳格式轉(zhuǎn)換成時(shí)間格式(2023年09月28日 10:00),感興趣的朋友一起看看吧
    2023-12-12
  • 詳解VUE Element-UI多級(jí)菜單動(dòng)態(tài)渲染的組件

    詳解VUE Element-UI多級(jí)菜單動(dòng)態(tài)渲染的組件

    這篇文章主要介紹了VUE Element-UI多級(jí)菜單動(dòng)態(tài)渲染的組件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 為vue中的data賦值computed計(jì)算屬性后,出現(xiàn)undefined原因及解決

    為vue中的data賦值computed計(jì)算屬性后,出現(xiàn)undefined原因及解決

    這篇文章主要介紹了為vue中的data賦值computed計(jì)算屬性后,出現(xiàn)undefined原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 基于cropper.js封裝vue實(shí)現(xiàn)在線圖片裁剪組件功能

    基于cropper.js封裝vue實(shí)現(xiàn)在線圖片裁剪組件功能

    這篇文章主要介紹了基于cropper.js封裝vue實(shí)現(xiàn)在線圖片裁剪組件功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-03-03
  • vue指令?v-bind的使用和注意需要注意的點(diǎn)

    vue指令?v-bind的使用和注意需要注意的點(diǎn)

    這篇文章主要給大家分享了?v-bind的使用和注意需要注意的點(diǎn),下面文章圍繞?v-bind指令的相關(guān)資料展開內(nèi)容且附上詳細(xì)代碼?需要的小伙伴可以參考一下,希望對(duì)大家有所幫助
    2021-11-11
  • Vuex總體案例詳解

    Vuex總體案例詳解

    這篇文章主要介紹了Vuex總體案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue2使用wangeditor實(shí)現(xiàn)數(shù)學(xué)公式和富文本編輯器

    vue2使用wangeditor實(shí)現(xiàn)數(shù)學(xué)公式和富文本編輯器

    這篇文章主要為大家詳細(xì)介紹了vue2如何使用wangeditor實(shí)現(xiàn)數(shù)學(xué)公式和富文本編輯器功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-12-12
  • Vue-Router路由守衛(wèi)詳?shù)募?xì)用法教程

    Vue-Router路由守衛(wèi)詳?shù)募?xì)用法教程

    在Vue.js應(yīng)用中,Vue-Router是一個(gè)非常重要的插件,它允許我們實(shí)現(xiàn)頁面間的導(dǎo)航,然而,僅僅實(shí)現(xiàn)導(dǎo)航是不夠的,我們還需要在導(dǎo)航的不同階段進(jìn)行各種操作,本文將結(jié)合實(shí)際案例,詳細(xì)介紹Vue-Router路由守衛(wèi)的用法,需要的朋友可以參考下
    2024-12-12
  • Vue日期時(shí)間選擇器組件使用方法詳解

    Vue日期時(shí)間選擇器組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue日期時(shí)間選擇器組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue動(dòng)態(tài)路由:路由參數(shù)改變,視圖不更新問題的解決

    vue動(dòng)態(tài)路由:路由參數(shù)改變,視圖不更新問題的解決

    今天小編就為大家分享一篇vue動(dòng)態(tài)路由:路由參數(shù)改變,視圖不更新問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評(píng)論

华阴市| 莒南县| 湘西| 花莲市| 青神县| 新闻| 靖宇县| 门源| 民勤县| 商南县| 丰顺县| 崇左市| 沙坪坝区| 桑日县| 同仁县| 宝应县| 铜山县| 宝鸡市| 宁国市| 凤冈县| 北川| 嵩明县| 原平市| 安乡县| 奉化市| 阿合奇县| 谢通门县| 章丘市| 宜昌市| 长海县| 军事| 崇信县| 定南县| 白城市| 增城市| 柳江县| 阜宁县| 澄城县| 东海县| 黄骅市| 桂林市|