国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用

這篇具有很好參考價值的文章主要介紹了【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ref和$refs獲取dom元素

為什么會有 ref 和 $refs?

因為在vue頁面中使用dom查找元素,不管你是不是在子組件里面查找,查找的都是整個頁面的元素,如果你想查找單獨組件里面的元素是不容易實現(xiàn)的,除非把每個組件的class寫成獨一無二,但是在日常開發(fā)中,一個vue頁面不知道會有多少組件,所以出現(xiàn)了relrefs.

ref 和 $refs 作用
【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用,vue,vue.js,javascript,前端,html,開發(fā)語言,前端框架

ref 和 $refs 使用

通過在要獲取的元素上面店家rel屬性 rel="名稱"。
然后在要獲取此元素的js代碼上通過 this.$rels.名稱 就可以獲取。

如此獲取的就是當前組件內(nèi)部的標簽了,

<template>
  <div>
    <!-- 為input框添加rel屬性 -->
    <input  type="text" :value="msg" ref="inp"
        @input="fun($event.target.value)">
    <button @click="showInput">顯示</button>
  </div>
</template>
<script>
export default {
    props:{
        msg:String
    },
    mounted(){
    },
    methods:{
        fun(e){
            this.$emit('update:msg',e)
        },
        showInput(){
            //通過this.$rels.inp獲得標簽
            console.log(this.$refs.inp)
            console.log(this.$refs.inp.value)
        }
    }
}
</script>

也是成功的獲取到了并且打印出來:
【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用,vue,vue.js,javascript,前端,html,開發(fā)語言,前端框架

vue異步更新和$nextTick使用

什么是vue的異步更新?
Vue的異步更新是指在Vue的響應(yīng)式系統(tǒng)中,更新組件的方式是異步的。這意味著當數(shù)據(jù)發(fā)生變化時,Vue并不立即更新組件的DOM,而是等到同一事件循環(huán)中的所有數(shù)據(jù)變化完成后,再統(tǒng)一進行一次更新操作。

vue的異步更新好處
Vue之所以采用異步更新的機制,是為了優(yōu)化性能和避免不必要的重復(fù)渲染。當數(shù)據(jù)發(fā)生變化時,Vue會將變化加入到一個隊列中,然后通過異步的方式批量處理這些變化。這樣可以避免頻繁的DOM操作,提高性能。

異步更新還帶來一個重要的好處,即在同一個事件循環(huán)中,多處對同一數(shù)據(jù)進行修改時,只會觸發(fā)一次更新操作。這樣可以減少重復(fù)的計算和渲染,提升性能。

總結(jié)來說,Vue的異步更新可以提高性能和優(yōu)化渲染,使得組件更新更加高效和靈活。

案列:
我需要點擊編輯按鈕 然后顯示input框 并且聚焦到input框上。
【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用,vue,vue.js,javascript,前端,html,開發(fā)語言,前端框架
我的代碼是這樣的:

<template>
  <div>
    <!-- 為input框添加rel屬性,使用v-if來顯示隱藏input框 -->
    <input  type="text" :value="msg" v-if="isShow" ref="inp">
    <!-- 添加方法 -->
    <button  @click="showInput">編輯</button>
  </div>
</template>

<script>
export default {
    data(){
        return{
            isShow:false
        }
    },
    props:{
        msg:String
    },
    mounted(){
    },
    methods:{
        showInput(){
            //顯示input框
            this.isShow = true
            //通過this.$rels.inp獲得標簽
            console.log(this.$refs.inp)
            console.log(this.$refs.inp.value)
            //為input框聚焦
            this.$refs.inp.focus()
        }
    }
}
</script>

然后我點擊編輯按鈕出現(xiàn)了下面的錯誤,說我的this.$refs.inp是 undefined。
【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用,vue,vue.js,javascript,前端,html,開發(fā)語言,前端框架
為什么 “顯示之后“ 立刻獲取焦點沒有成功呢?
就是vue采用的是異步更新的機制,當 //顯示input框 this.isShow = true時并沒有馬上去更新頁面的dom,而是等待這個方法執(zhí)行完成再去進行更新頁面,所以導(dǎo)致獲取的this.$refs.inp是 undefined。所以問題就是在我在它沒有更新dom的時候就去獲取dom,所以是undefined.

如何解決?(使用$nextTick

<template>
  <div>
    <input  type="text" :value="msg" v-if="isShow" ref="inp">
    <button  @click="showInput">編輯</button>
  </div>
</template>

<script>
export default {
    data(){
        return{
            isShow:false
        }
    },
    props:{
        msg:String
    },
    mounted(){
    },
    methods:{
        showInput(){
            this.isShow = true
            //通過this.$rels.inp獲得標簽
            //將需要使用未更新的dom元素使用this.$nextTick()封裝為箭頭函數(shù)包裹起來
            this.$nextTick(()=>{
                this.$refs.inp.focus()
                console.log(this.$refs.inp)
                console.log(this.$refs.inp.value)
            })
        }
    }
}
</script>

最后成功聚焦,并且控制臺輸出了當前獲取標簽:
【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用,vue,vue.js,javascript,前端,html,開發(fā)語言,前端框架文章來源地址http://www.zghlxwxcb.cn/news/detail-704052.html

到了這里,關(guān)于【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 第十二節(jié)——ref

    ref 被用來給DOM元素或子組件注冊引用信息。引用信息會根據(jù)父組件的 $refs 對象進行注冊。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子組件上,引用信息就是組件實例。 注意:只要想要在Vue中直接操作DOM元素,就必須用ref屬性進行注冊 ref 加在普通的元素上,

    2024年02月07日
    瀏覽(16)
  • vue3 ts獲取組件 ref元素的值

    在 Vue 3 + TypeScript 中,要獲取組件 ref 元素的值,可以通過 ref 函數(shù)創(chuàng)建一個 ref,并將其綁定到組件的 ref 屬性上。然后,可以通過訪問 ref 的 .value 屬性來獲取該組件的實例。 以下是一個示例代碼: 在上述代碼中,我們首先使用 ref 函數(shù)創(chuàng)建了一個名為 childComponentRef 的 ref,并

    2024年02月05日
    瀏覽(27)
  • 29 - ref 和 $refs 獲取dom和組件

    29 - ref 和 $refs 獲取dom和組件

    作用: 利用 ref? 和 $refs 可以用于 獲取 dom 元素 , 或 組件實例 特點: 查找范圍 - 當前組件內(nèi)(更精確穩(wěn)定) 1. 獲取 dom: ? ? ? ? (1). 目標標簽 - 添加 ref屬性 ? ? ? ? (2). 恰當時機,通過this.$refs.xxx,獲取目標標簽 ????????代碼示例: ? 2. 獲取組件 ? ? ? ? (1). 目標組件 - 添加 r

    2024年02月11日
    瀏覽(19)
  • 【Vue3】vue3通過ref獲取元素離頂部的距離

    【Vue3】vue3通過ref獲取元素離頂部的距離

    vue3版本 ^3.2.45 [ref].value.$el.getBoundingClientRect().top 通過ref獲取元素。 使用 getBoundingClientRect().top 獲取離頂部的距離 homeView.vue

    2024年02月15日
    瀏覽(22)
  • React 中的 ref 如何操作 dom節(jié)點,使輸入框獲取焦點

    React 中的 ref 如何操作 dom節(jié)點,使輸入框獲取焦點

    .focus() 獲取焦點 當用戶點擊按鈕時, handleClick 函數(shù)會被調(diào)用,從而將焦點聚焦到文本輸入框上。 定義一個名為 handleClick 的函數(shù)。當按鈕被點擊時,這個函數(shù)會被調(diào)用。在函數(shù)內(nèi)部,我們通過 inputRef.current 獲取到 inputRef 引用所指向的 DOM 元素,并調(diào)用其 focus 方法,將焦點聚

    2024年02月09日
    瀏覽(20)
  • el-table里面存在固定列獲取video的ref的時候無法獲取原始DOM

    el-table里面存在固定列獲取video的ref的時候無法獲取原始DOM

    這是通過ref獲取的dom實例,卻變成了fixed固定出現(xiàn)了表格里面的video的實例 我現(xiàn)在的需求是修改里面的currentTime,但是獲取的是固定列的video的ref,修改了,原始video也不會有任何變化 創(chuàng)造一個變量控制fixed的固定列變化 當video里面的 @loadedmetadata=\\\"setInitialTime\\\"修改完數(shù)據(jù),再變

    2024年01月19日
    瀏覽(19)
  • uniapp中開發(fā)小程序使用ref獲取dom實例,一直顯示undefined,竟然發(fā)現(xiàn)是這個原因!

    小程序是不能使用getElementById之類的dom api,所以考慮使用ref來獲取dom元素,但事實上并不是如此,綁定ref后并沒有輸出我想要的dom元素。 既然console.log(this.$refs.iRef)為undefined,會不會this.$refs也是undefined?然而this.$refs是有值的,就是沒有iRef,那么到底是為什么? 會不會是需要

    2024年02月11日
    瀏覽(17)
  • Vue2:用ref方式綁定自定義事件的注意事項

    我們知道綁定自定義事件可以用 ref 方式實現(xiàn)。 但是,這個方式,需要注意下,否則,實現(xiàn)不了我們的效果。 需求是這樣的,我們通過 ref 綁定的事件,來給 App 的 data 塊中的變量賦值。 基本寫法: 父組件 App 中 methods 函數(shù): 給 Student 組件綁定自定義事件 test 此處的 this 是誰

    2024年01月19日
    瀏覽(42)
  • Vue3——第十二章(Props)

    Vue3——第十二章(Props)

    一個組件需要顯式聲明它所接受的 props,這樣 Vue 才能知道外部傳入的哪些是 props,哪些是透傳 attribute 在使用 script setup 的單文件組件中,props 可以使用 defineProps() 宏來聲明: 在沒有使用 script setup 的組件中,prop 可以使用 props 選項來聲明: 注意傳遞給 defineProps() 的參數(shù)和提

    2023年04月09日
    瀏覽(21)
  • uni-app使用vue3,在元素或組件實例上添加ref,用this.$refs顯示undefined

    項目中引用了一個UI組件庫,在表單上添加了`ref`屬性,方便提交時驗證。觸發(fā)提交方法時顯示不存在這個方法或this.$refs為undefined。 解決方法: 引入`getCurrentInstance`,t得到當前組件實例,然后用`ctx.$refs`代替`this.$refs`。這里的`ctx`相當于全局this。 ------------------ 2023/10/27更新-

    2024年02月07日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包