欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3循環(huán)設(shè)置ref并獲取的解決方案

 更新時(shí)間:2024年02月02日 08:45:26   作者:湛海不過(guò)深藍(lán)  
我們?cè)谄綍r(shí)做業(yè)務(wù)的時(shí)候,父子組件通信會(huì)經(jīng)常用到ref,這篇文章主要給大家介紹了關(guān)于vue3循環(huán)設(shè)置ref并獲取的解決方案,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

vue可通過(guò)ref來(lái)獲取當(dāng)前dom,但是vue3有個(gè)問(wèn)題,就是必須定義ref的變量名,才能使用

倘若有許多個(gè)ref,一個(gè)個(gè)去定義未免過(guò)于繁瑣,還有就是若是dom是使用v-for循環(huán)出來(lái)的,那么ref也就不確定了,無(wú)法提前定義

解決方法:

  • 這是使用v-for循環(huán)出來(lái)的dom,ref通過(guò)index下標(biāo)來(lái)命名,
<div
 class="chart"
  v-for="(item, index) in riskSpreadItem"
  :key="item.title"
>
  <Pie
    :id="`riskSpread${index}`"
    :ref="el => getRiskSpreadRef(el, index)"
    :title="item.title"
    :data="item.data"
    emptyText="暫無(wú)風(fēng)險(xiǎn)"
  />
</div>
  • 此時(shí)riskSpreadRefList里面放的就是所有ref
const riskSpreadRefList = ref<HTMLElement[]>([]);
const getRiskSpreadRef = (el, index) => {
  if (el) {
    riskSpreadRefList.value[index] = el; 
  }
};
  • 使用:循環(huán)去取就行了,item就是通過(guò)ref拿到的dom元素??梢圆僮魃厦娑x的變量或方法
riskSpreadRefList.value?.forEach((item: any) =&gt; {
    console.log(item)
});

還有一種獲取ref的方法,與上面略相似,記錄一下,但是用push可能會(huì)造成ref還沒(méi)渲染完得到null的情況,所以最好還是上面那樣寫(xiě)

<div class="chart">
  <Pie
    :id="`risk${index}`"
    :ref="getRiskRef"
    :data="item.data"
    @clickPie="queryRiskList"
  />
</div>
let riskRefList = ref<HTMLElement[]>([]);
const getRiskRef = (el) => {
  if (el) {
    riskRefList.value.push(el);
  }
};
riskRefList .value?.forEach((item: any) => {
    console.log(item)
});

附:vue3獲取動(dòng)態(tài)循環(huán)生成的ref

html部分:

<template>
    <div  v-for="(item,index) in list" :ref="setItemRef">
      {{item}}
    </div>
    <el-button @click="getRefData">獲取</el-button>
</template>

js部分

<script lang="ts" setup>
    import {ref,reactive,onMounted} from 'vue'
    const refList = ref([]); //定義ref數(shù)組
    const list = reactive([
        "第一行數(shù)據(jù)",
        "第二行數(shù)據(jù)",
        "第三行數(shù)據(jù)",
        "第四行數(shù)據(jù)",
    ])
    //賦值ref
    const setItemRef = el => { 
        if (el) {
            refList.value.push(el);
        }
    }

	//獲取ref并執(zhí)行接下來(lái)操作
    const getRefData = ()=>{
        for(let i =0; i < refList.value.length; i++){
            console.log(refList.value[i]); // refList.value[i].xxx   執(zhí)行todo
        }
    }
 </script>

總結(jié) 

到此這篇關(guān)于vue3循環(huán)設(shè)置ref并獲取的文章就介紹到這了,更多相關(guān)vue3循環(huán)設(shè)置ref并獲取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ant-design-vue動(dòng)態(tài)表格合并案例

    ant-design-vue動(dòng)態(tài)表格合并案例

    這篇文章主要介紹了ant-design-vue動(dòng)態(tài)表格合并案例,文章圍繞主題通過(guò)案例詳解展開(kāi)相關(guān)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Vue中watch的多種使用方法小結(jié)

    Vue中watch的多種使用方法小結(jié)

    Vue的watch選項(xiàng)提供了多種方法來(lái)觀測(cè)數(shù)據(jù)屬性的變化,讓我們能夠編寫(xiě)更加優(yōu)雅和維護(hù)性更高的代碼,本文給大家介紹Vue中watch的多種使用方法小結(jié),感興趣的朋友一起看看吧
    2023-10-10
  • Vue子父組件之間傳值的三種方法示例

    Vue子父組件之間傳值的三種方法示例

    Vue的組件化給前端開(kāi)發(fā)帶來(lái)極大的便利,下面這篇文章主要給大家介紹了關(guān)于Vue子父組件之間傳值的三種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • 基于vue+elementPlus的動(dòng)態(tài)導(dǎo)航標(biāo)簽欄tabs具體過(guò)程

    基于vue+elementPlus的動(dòng)態(tài)導(dǎo)航標(biāo)簽欄tabs具體過(guò)程

    這篇文章主要給大家介紹了關(guān)于基于vue+elementPlus的動(dòng)態(tài)導(dǎo)航標(biāo)簽欄tabs的相關(guān)資料,本文主要詳述了在系統(tǒng)上添加導(dǎo)航標(biāo)簽欄功能時(shí),首次嘗試的過(guò)程,并且希望能為同行提供一個(gè)小demo,需要的朋友可以參考下
    2024-10-10
  • Vuex實(shí)現(xiàn)購(gòu)物車(chē)小功能

    Vuex實(shí)現(xiàn)購(gòu)物車(chē)小功能

    這篇文章主要為大家詳細(xì)介紹了Vuex實(shí)現(xiàn)購(gòu)物車(chē)小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 教你一招解決vue頁(yè)面自適應(yīng)布局

    教你一招解決vue頁(yè)面自適應(yīng)布局

    在前端開(kāi)發(fā)的時(shí)候經(jīng)常會(huì)遇到這樣的困惑,設(shè)計(jì)師給你的設(shè)計(jì)稿的尺寸和頁(yè)面的尺寸不一致,導(dǎo)致了頁(yè)面無(wú)法正常顯示,下面這篇文章主要給大家介紹了關(guān)于一招解決vue頁(yè)面自適應(yīng)布局的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 示例vue 的keep-alive緩存功能的實(shí)現(xiàn)

    示例vue 的keep-alive緩存功能的實(shí)現(xiàn)

    這篇文章主要介紹了示例vue 的keep-alive緩存功能的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 詳解vue-cli項(xiàng)目中怎么使用mock數(shù)據(jù)

    詳解vue-cli項(xiàng)目中怎么使用mock數(shù)據(jù)

    這篇文章主要介紹了vue-cli項(xiàng)目中怎么使用mock數(shù)據(jù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Vue2和Vue3在v-for遍歷時(shí)ref獲取dom節(jié)點(diǎn)的區(qū)別及說(shuō)明

    Vue2和Vue3在v-for遍歷時(shí)ref獲取dom節(jié)點(diǎn)的區(qū)別及說(shuō)明

    這篇文章主要介紹了Vue2和Vue3在v-for遍歷時(shí)ref獲取dom節(jié)點(diǎn)的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue 自定義icon圖標(biāo)的步驟

    vue 自定義icon圖標(biāo)的步驟

    這篇文章主要介紹了vue 自定義icon的圖標(biāo)的步驟,文中大概給大家分為兩步驟,通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08

最新評(píng)論