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

vue3 ref如何獲取標(biāo)簽dom

 更新時(shí)間:2025年04月28日 14:25:58   作者:可缺不可濫  
這篇文章主要介紹了vue3 ref如何獲取標(biāo)簽dom問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

概述

在 Vue 中使用 ref 的主要作用是允許你訪(fǎng)問(wèn)和操作 DOM 元素或組件實(shí)例。ref 允許你在 Vue 組件中獲取對(duì)特定 DOM 元素或子組件實(shí)例的引用,以便可以進(jìn)行以下操作:

直接訪(fǎng)問(wèn)和修改 DOM 元素的屬性和內(nèi)容:你可以使用 ref 來(lái)訪(fǎng)問(wèn)和修改特定 DOM 元素的屬性、樣式、內(nèi)容等。這對(duì)于需要直接操作 DOM 元素的情況非常有用,例如,動(dòng)態(tài)改變樣式、內(nèi)容或綁定事件。

訪(fǎng)問(wèn)子組件的實(shí)例:如果你在父組件中使用 ref 來(lái)引用子組件,你可以訪(fǎng)問(wèn)子組件的屬性和方法。這使得父組件可以與子組件進(jìn)行通信,調(diào)用子組件的方法或訪(fǎng)問(wèn)子組件的數(shù)據(jù)。

vue3代碼塊

<template>
  <div>
    <input type="text" ref="inputRef" value="1111" />
    <input type="text" ref="input2Ref">
    <span>123</span>
  </div>
</template>

<script>
import { ref, onMounted } from "vue";
export default {
  setup() {
    const inputRef = ref(null);

    onMounted(() => {
      console.log(inputRef.value); /** 這是inputDom */
      console.log(inputRef.value.value) /** 1111 */ 
    });
    return { inputRef };
  },
  mounted() {
    console.log(this.$refs.input2Ref)
  }
};
</script>

<style></style>

ref的本質(zhì)是轉(zhuǎn)為reactive

ref(18) 轉(zhuǎn)為 reactive({value:18})

所以取值的時(shí)候比以前多一個(gè).value。

vue3通過(guò)ref獲取 子組件的數(shù)據(jù)或方法

在Vue 3中,可以使用 ref 獲取子組件的數(shù)據(jù)和方法。以下是具體的步驟:

1. 在父組件中設(shè)置 ref

首先,在父組件中定義一個(gè) ref,并將其傳遞給子組件:

<template>
  <div>
    <!-- 通過(guò)ref引用子組件 -->
    <ChildComponent ref="childRef" />
    <button @click="callChildMethod">調(diào)用子組件方法</button>
  </div>
</template>

<script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

export default {
  components: { ChildComponent },
  setup() {
    const childRef = ref(null); // 創(chuàng)建ref以引用子組件

    // 定義調(diào)用子組件方法的函數(shù)
    const callChildMethod = () => {
      if (childRef.value) {
        childRef.value.someMethod(); // 調(diào)用子組件方法
        console.log(childRef.value.someData); // 訪(fǎng)問(wèn)子組件的數(shù)據(jù)
      }
    };

    return {
      childRef,
      callChildMethod
    };
  }
};
</script>

2. 在子組件中定義方法和數(shù)據(jù)

在子組件中,將你需要的 datamethods 定義為 expose 的內(nèi)容,這樣它們可以在父組件中被訪(fǎng)問(wèn)到:

<template>
  <div>子組件</div>
</template>

<script>
import { ref, defineExpose } from 'vue';

export default {
  setup() {
    const someData = ref('這是子組件的數(shù)據(jù)');
    
    const someMethod = () => {
      console.log('這是子組件的方法');
    };

    // 使用 defineExpose 暴露數(shù)據(jù)和方法
    defineExpose({
      someData,
      someMethod
    });

    return {};
  }
};
</script>

解釋?zhuān)?/strong>

  • defineExpose:在Vue 3中,defineExpose 是用來(lái)顯式暴露子組件的內(nèi)容。通過(guò) defineExpose,你可以選擇性地暴露子組件的 datamethods,使得父組件可以通過(guò) ref 來(lái)訪(fǎng)問(wèn)。
  • childRef.value.someMethod():調(diào)用子組件的方法。
  • childRef.value.someData:訪(fǎng)問(wèn)子組件的數(shù)據(jù)。

這樣設(shè)置后,父組件就可以通過(guò) childRef 引用來(lái)調(diào)用子組件的內(nèi)容了。

注意

setup的執(zhí)行期間是在 beforeCreate和created之間執(zhí)行的,而這個(gè)時(shí)候dom還未被掛載,所以直接在setup中獲取dom是不可能成功的,只能在setup的生命周期onMounted及以后獲取dom。

在 Vue 3 中,你也可以通過(guò) this.$refs 來(lái)訪(fǎng)問(wèn)這個(gè) DOM 元素的引用,就像在 Vue 2 中一樣。

vue2 獲取ref

在 Vue 2 中,你可以使用 ref 來(lái)獲取標(biāo)簽 DOM 元素的引用。以下是一些示例代碼,展示如何使用 ref 獲取 DOM 元素的引用:

<template>
  <div>
    <button @click="handleClick">獲取標(biāo)簽DOM</button>
    <p ref="myParagraph">這是一個(gè)段落。</p>
  </div>
</template>

在上面的示例中,我們給 <p> 標(biāo)簽添加了一個(gè) ref 屬性,并賦予它一個(gè)名稱(chēng),即 “myParagraph”?,F(xiàn)在,我們可以在 Vue 組件中通過(guò) this.$refs 來(lái)訪(fǎng)問(wèn)這個(gè) DOM 元素的引用。

<script>
export default {
  methods: {
    handleClick() {
      // 獲取DOM元素的引用
      const paragraphElement = this.$refs.myParagraph;
      
      // 在這里可以操作DOM元素
      paragraphElement.style.color = 'red';
    }
  }
}
</script>

在上面的示例中,我們使用 this.$refs.myParagraph 來(lái)訪(fǎng)問(wèn) <p> 標(biāo)簽的 DOM 元素引用,并隨后修改了它的文本顏色。這使你能夠在 Vue 組件中方便地訪(fǎng)問(wèn)和操作 DOM 元素。

請(qǐng)注意,使用 ref 獲取 DOM 元素的引用通常不是 Vue 的首選方式,因?yàn)?Vue 更鼓勵(lì)數(shù)據(jù)驅(qū)動(dòng)視圖。如果可能,盡量使用 Vue 數(shù)據(jù)綁定和指令來(lái)修改視圖,而不是直接操作 DOM 元素。然而,有時(shí)你可能需要直接訪(fǎng)問(wèn) DOM 元素,這時(shí) ref 是一個(gè)可行的選擇。

vue 其它獲取dom的方式

在 Vue 中,除了使用 ref 來(lái)獲取 DOM 元素的引用之外,還可以使用其他方式來(lái)獲取 DOM 元素。

以下是一些常見(jiàn)的方法:

1.通過(guò) $el 屬性

this.$el.style.color = 'red'; // 修改組件的根元素樣式
  • 在 Vue 組件中,你可以通過(guò)訪(fǎng)問(wèn) $el 屬性來(lái)獲取組件的根 DOM 元素。
  • 例如,在 Vue 組件的方法中,可以使用 this.$el 訪(fǎng)問(wèn)組件的根元素。

2.通過(guò)事件對(duì)象

methods: {
  handleClick(event) {
    event.target.style.backgroundColor = 'green'; // 修改點(diǎn)擊的元素的背景顏色
  }
}
  • 在事件處理程序中,事件對(duì)象(通常命名為 event)提供了 target 屬性,它指向觸發(fā)事件的 DOM 元素。
  • 這可以在事件處理程序內(nèi)部使用,用來(lái)訪(fǎng)問(wèn)事件的目標(biāo)元素。

3.使用 document.querySelectordocument.querySelectorAll

const element = document.querySelector('#myElement'); // 通過(guò)id選擇器獲取元素
const elements = document.querySelectorAll('.myClass'); // 通過(guò)類(lèi)名選擇器獲取多個(gè)元素
  • 你可以使用標(biāo)準(zhǔn)的 DOM API 來(lái)通過(guò)選擇器查詢(xún)和獲取 DOM 元素。
  • 這通常用于不在 Vue 組件內(nèi)的情況,或在 Vue 組件之外的操作。

4.通過(guò)自定義指令

  • 你可以創(chuàng)建自定義指令,以在 Vue 組件中處理 DOM 元素。這允許你以更高級(jí)的方式與 DOM 元素交互。
  • 自定義指令可以在全局或局部注冊(cè),然后在模板中使用。

這些方法提供了不同的方式來(lái)獲取和操作 DOM 元素,你可以根據(jù)具體的需求和情境選擇最適合的方法。不過(guò),在 Vue 中使用 ref$el 是較為常見(jiàn)和方便的方式,特別是在組件內(nèi)部。

總結(jié)

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

相關(guān)文章

  • 關(guān)于Vue中this.$set的正確使用

    關(guān)于Vue中this.$set的正確使用

    我們?cè)陧?xiàng)目開(kāi)發(fā)的過(guò)程中,經(jīng)常會(huì)遇到這種情況:為data中的某一個(gè)對(duì)象添加一個(gè)屬性,我們?cè)撊绾谓鉀Q這個(gè)問(wèn)題呢,下面小編給大家?guī)?lái)了Vue中this.$set的正確使用,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Vue mixins詳解與使用技巧

    Vue mixins詳解與使用技巧

    Vue mixins提供了一個(gè)非常靈活的方式來(lái)分發(fā)Vue組件中的可復(fù)用功能,通過(guò)全局混入和局部混入,可以將預(yù)定義的方法、數(shù)據(jù)等混合到Vue組件中,這種技術(shù)可以簡(jiǎn)化代碼,提高開(kāi)發(fā)效率,并允許在不同組件間共享功能
    2024-09-09
  • Vue $attrs & inheritAttr實(shí)現(xiàn)button禁用效果案例

    Vue $attrs & inheritAttr實(shí)現(xiàn)button禁用效果案例

    這篇文章主要介紹了Vue $attrs & inheritAttr實(shí)現(xiàn)button禁用效果案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Vue 實(shí)現(xiàn)顯示/隱藏層的思路(加全局點(diǎn)擊事件)

    Vue 實(shí)現(xiàn)顯示/隱藏層的思路(加全局點(diǎn)擊事件)

    這篇文章主要介紹了Vue 實(shí)現(xiàn)顯示/隱藏層的思路(加全局點(diǎn)擊事件),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Vue實(shí)現(xiàn)各種類(lèi)型文件的預(yù)覽功能

    Vue實(shí)現(xiàn)各種類(lèi)型文件的預(yù)覽功能

    這篇文章主要介紹了如何在Vue3中使用aceEditor插件和vue-ipynb插件實(shí)現(xiàn)不同類(lèi)型的文件預(yù)覽,包括txt、md、json、pkl、mps、py、ipynb、doc、docx、pdf、xlsx、csv等文件,需要的朋友可以參考下
    2025-03-03
  • 詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫(xiě)css

    詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫(xiě)css

    這篇文章主要介紹了詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫(xiě)css,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • create?vite?實(shí)例源碼解析

    create?vite?實(shí)例源碼解析

    這篇文章主要為大家介紹了create?vite?實(shí)例源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • vue返回首頁(yè)后如何清空路由問(wèn)題

    vue返回首頁(yè)后如何清空路由問(wèn)題

    這篇文章主要介紹了vue返回首頁(yè)后如何清空路由問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue導(dǎo)入Echarts實(shí)現(xiàn)散點(diǎn)圖

    Vue導(dǎo)入Echarts實(shí)現(xiàn)散點(diǎn)圖

    這篇文章主要為大家詳細(xì)介紹了Vue導(dǎo)入Echarts實(shí)現(xiàn)散點(diǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • Vue組件庫(kù)發(fā)布到npm詳解

    Vue組件庫(kù)發(fā)布到npm詳解

    本片文章給大家詳細(xì)介紹了如何將Vue組件庫(kù)發(fā)布到npm的方法以及代碼示例分享,感興趣的朋友參考學(xué)習(xí)下。
    2018-02-02

最新評(píng)論

宾阳县| 朝阳区| 三亚市| 铜陵市| 武隆县| 兰坪| 武穴市| 互助| 福鼎市| 饶河县| 平顺县| 慈溪市| 大兴区| 水富县| 沙田区| 门头沟区| 石台县| 交口县| 藁城市| 东兴市| 阆中市| 上饶县| 灵寿县| 谷城县| 遂平县| 宁化县| 萍乡市| 隆化县| 安福县| 惠水县| 沙田区| 鄂尔多斯市| 鹿邑县| 霍城县| 神农架林区| 宜黄县| 贵港市| 庄浪县| 舒兰市| 兴山县| 沾化县|