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

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

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

概述

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

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

訪問子組件的實(shí)例:如果你在父組件中使用 ref 來引用子組件,你可以訪問子組件的屬性和方法。這使得父組件可以與子組件進(jìn)行通信,調(diào)用子組件的方法或訪問子組件的數(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通過ref獲取 子組件的數(shù)據(jù)或方法

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

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

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

<template>
  <div>
    <!-- 通過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); // 訪問子組件的數(shù)據(jù)
      }
    };

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

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

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

<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>

解釋:

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

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

注意

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

在 Vue 3 中,你也可以通過 this.$refs 來訪問這個(gè) DOM 元素的引用,就像在 Vue 2 中一樣。

vue2 獲取ref

在 Vue 2 中,你可以使用 ref 來獲取標(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è)名稱,即 “myParagraph”?,F(xiàn)在,我們可以在 Vue 組件中通過 this.$refs 來訪問這個(gè) DOM 元素的引用。

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

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

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

vue 其它獲取dom的方式

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

以下是一些常見的方法:

1.通過 $el 屬性

this.$el.style.color = 'red'; // 修改組件的根元素樣式
  • 在 Vue 組件中,你可以通過訪問 $el 屬性來獲取組件的根 DOM 元素。
  • 例如,在 Vue 組件的方法中,可以使用 this.$el 訪問組件的根元素。

2.通過事件對象

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

3.使用 document.querySelectordocument.querySelectorAll

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

4.通過自定義指令

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

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

總結(jié)

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

相關(guān)文章

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

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

    我們在項(xiàng)目開發(fā)的過程中,經(jīng)常會遇到這種情況:為data中的某一個(gè)對象添加一個(gè)屬性,我們該如何解決這個(gè)問題呢,下面小編給大家?guī)砹薞ue中this.$set的正確使用,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Vue mixins詳解與使用技巧

    Vue mixins詳解與使用技巧

    Vue mixins提供了一個(gè)非常靈活的方式來分發(fā)Vue組件中的可復(fù)用功能,通過全局混入和局部混入,可以將預(yù)定義的方法、數(shù)據(jù)等混合到Vue組件中,這種技術(shù)可以簡化代碼,提高開發(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à)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    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)各種類型文件的預(yù)覽功能

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

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

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

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

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

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

    vue返回首頁后如何清空路由問題

    這篇文章主要介紹了vue返回首頁后如何清空路由問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(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組件庫發(fā)布到npm詳解

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

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

最新評論

奉新县| 蓝田县| 义马市| 南木林县| 延边| 新田县| 嘉定区| 常山县| 龙门县| 西藏| 雅安市| 天祝| 北流市| 鄢陵县| 北川| 双流县| 伊通| 信宜市| 电白县| 独山县| 方正县| 长葛市| 江陵县| 新建县| 会泽县| 射阳县| 汨罗市| 商水县| 长丰县| 宁蒗| 上杭县| 丹东市| 洪洞县| 柏乡县| 巩留县| 雅江县| 九龙坡区| 喀什市| 田东县| 普兰店市| 白朗县|