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

Vue中動態(tài)綁定Ref的兩種方式總結(jié)

 更新時間:2024年09月06日 09:51:52   作者:火星大蜘蛛  
Vue3中的ref是一種創(chuàng)建響應式引用的方式,它在Vue生態(tài)系統(tǒng)中扮演著重要角色,下面這篇文章主要給大家介紹了關于Vue中動態(tài)綁定Ref的兩種方式,需要的朋友可以參考下

前言

項目中ref綁定是常用的操作,那么如何實現(xiàn)動態(tài)綁定ref并實現(xiàn)動態(tài)獲取呢?動態(tài)綁定的進階寫法又該如何使用?

比如以下需求:

需求:用戶動態(tài)創(chuàng)建多個空白表單,提交時需要獲取當前所有表單數(shù)據(jù)。

一、方式一:利用模板字符串

以下方法定義 Ref 時定義到this.refs中的形式為數(shù)組,這里我們打印一下所有的ref:

可以看到打印的Ref為數(shù)組形式,因此在調(diào)用時應該加上數(shù)組下標

此代碼如下(示例):

// Html部分(定義Ref)
:ref="'planRef'+item.id"或者
:ref="`planRef${item.id}`"
// Js部分(回調(diào)Ref)
this.$refs[`planRef${item.id}`][0].xxx;

二、方式二:利用箭頭函數(shù)傳入

1.基本聲明

在傳入 Ref 時直接傳入計算函數(shù),通過此函數(shù)再將創(chuàng)建的 Ref 保存到指定位置,在后續(xù)調(diào)用時就無需使用模板字符串,更直觀也更方便。

代碼如下(示例):

// Html部分(定義Ref)
:ref="getPlanRef"
// Js部分(定義Ref)、
// 定義存儲計劃Ref的位置,并且在回調(diào)時無需再使用this.$refs
const planRef = ref([]);
// 定義計算函數(shù)方法,將Ref存儲
const getPlanRef = (el) => el && planRef.value.push(el);

2.回調(diào)Ref

在回調(diào)剛剛定義的 Ref 時直接通過xxx.value[ 下標 ]的形式即可

代碼如下(示例):

// index即為存儲時的順序
planRef.value[index].方法

3.Ref重復存儲問題

在實際使用時,用戶動態(tài)新增表單即動態(tài)新增或刪除 Ref 時 Vue 會觸發(fā)響應更新 Dom ,而我們存儲 Ref 的位置(planRef)并未重置,那么頁面更新后的 Ref 列表將會再次 Push 到 planRef 中,那么就會導致 planRef 中出現(xiàn)重復存儲的 Ref 。

解決思路一:在對Ref進行新增或刪除操作時先刪除當前存儲Ref位置的數(shù)據(jù),參考代碼如下:

// Ref新增方法
function addPlan() {  
  // 清除存儲Ref位置的數(shù)據(jù),因為Dom改變會重新獲取
  planRef.value.length = 0;
  // 新增空計劃表
  planList.value.push( 表初始數(shù)據(jù) );
  // 提示語
  modal.msgSuccess('操作成功');
}
// Ref刪除方法
function deletePlan(index) {
  // 清除存儲Ref位置的數(shù)據(jù),因為Dom改變會重新獲取
  planRef.value.length = 0;
  // 移除需要刪除的計劃表
  planList.value.splice(index, 1);
  // 提示語
  modal.msgSuccess('操作成功');
}

解決思路二(未實踐):在 Html 部分利用聲明 key 值來避免所有 Dom 動態(tài)更新,但刪除時就需要對存儲 Ref 位置的數(shù)據(jù)進行修改,將要刪除的 Ref 進行移除,這個解決方法僅思路分享不知道是否可行。

附:ref在vfor中的使用

ref用在v-for內(nèi)部時通過this.$refs.name獲得的為一個數(shù)組,可知ref不同于id唯一標識,可以對同類型的dom采用相同的命名,通過vfor的下標獲得具體指向的dom元素

<!-- ref='menuItem'-->
<div ref="menuItem" class="menu_item" v-for="(item,index) in menuData" :key="item.id"
     @click="clickMenu(index)">
  <div class="menu_item_title">
    {{ item.name }}
  </div>
</div>
export default {
  name: 'demo',
  components: {},
  data() {
    return {
      menuData: [
        {id: '0001', name: '菜單一'},
        {id: '0002', name: '菜單二'},
        {id: '0003', name: '菜單三'},
      ],
    }
  },

  watch: {},
  computed: {},
  created() {
  },
  mounted() {
    console.log(this.$refs);
  },

  methods: {
    clickMenu: function (index) {
      //this.$refs['menuItem'][0]、this.$refs['menuItem'][1]、this.$refs['menuItem'][2]分別對應頁面三個dom
      console.log("點擊了下標:" + index, this.$refs['menuItem'][index]);
    }
  }
}

總結(jié)

以上為實際項目中遇到的需求與思路,以及遇到的一些問題,希望我的分享對您有幫助。

到此這篇關于Vue中動態(tài)綁定Ref的兩種方式的文章就介紹到這了,更多相關Vue動態(tài)綁定Ref方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue elementui 動態(tài)追加下拉框、輸入框功能

    vue elementui 動態(tài)追加下拉框、輸入框功能

    這篇文章主要介紹了vue elementui 動態(tài)追加下拉框、輸入框功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-04-04
  • 如何使用vite搭建vue3項目詳解

    如何使用vite搭建vue3項目詳解

    Vite 是一個面向現(xiàn)代瀏覽器的更輕,更快的web應用開發(fā)工具,下面這篇文章主要給大家介紹了關于如何使用vite搭建vue3項目的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 如何在vue3中同時使用tsx與setup語法糖

    如何在vue3中同時使用tsx與setup語法糖

    這篇文章主要介紹了如何在vue3中同時使用tsx與setup語法糖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • vue中的this.$router.push()路由傳值方式

    vue中的this.$router.push()路由傳值方式

    這篇文章主要介紹了vue中的this.$router.push()路由傳值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue3實現(xiàn)H5表單驗證組件的示例

    vue3實現(xiàn)H5表單驗證組件的示例

    本文主要介紹了vue3實現(xiàn)H5表單驗證組件的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Vue中computed和watch的區(qū)別小結(jié)

    Vue中computed和watch的區(qū)別小結(jié)

    watch和computed都是以Vue的依賴追蹤機制為基礎的,當某一個依賴型數(shù)據(jù)發(fā)生變化的時候,所有依賴這個數(shù)據(jù)的相關數(shù)據(jù)會自動發(fā)生變化,即自動調(diào)用相關的函數(shù),來實現(xiàn)數(shù)據(jù)的變動,這篇文章簡單介紹下Vue中computed和watch的區(qū)別異同,感興趣的朋友一起看看吧
    2022-12-12
  • vue實現(xiàn)購物車的小練習

    vue實現(xiàn)購物車的小練習

    這篇文章主要為大家詳細介紹了vue實現(xiàn)購物車的小練習,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • vue實現(xiàn)菜單切換功能

    vue實現(xiàn)菜單切換功能

    這篇文章主要介紹了vue實現(xiàn)菜單切換功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue中watch和computed的區(qū)別詳解

    vue中watch和computed的區(qū)別詳解

    這篇文章主要給大家介紹了關于vue中watch和computed區(qū)別的相關資料,computed和watch都是vue框架中的用于監(jiān)聽數(shù)據(jù)變化的屬性,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • vue中v-for加載本地靜態(tài)圖片方法

    vue中v-for加載本地靜態(tài)圖片方法

    下面小編就為大家分享一篇vue中v-for加載本地靜態(tài)圖片方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論

马关县| 湘潭县| 永嘉县| 界首市| 吉首市| 南丹县| 濮阳县| 永和县| 台东市| 云安县| 辽源市| 炉霍县| 永定县| 泗水县| 剑河县| 兴义市| 南澳县| 尼玛县| 金平| 蒙自县| 改则县| 永安市| 吴川市| 威远县| 吐鲁番市| 吐鲁番市| 报价| 保定市| 灯塔市| 崇左市| 额敏县| 海安县| 鄂州市| 乌什县| 乌审旗| 沁源县| 饶平县| 浮山县| 焦作市| 林州市| 锦州市|