Vue2和Vue3在v-for遍历时ref获取dom节点的区别及说明

Vue2和Vue3在v-for遍历时ref获取dom节点的区别主要体现在template的使用方式上。下面我将详细介绍Vue2和Vue3在使用v-for遍历时ref获取dom节点的不同之处:

Vue2中v-for遍历时ref获取dom节点

在Vue2中我们可以使用Vue提供的特殊属性:ref 来获取dom节点。在使用v-for遍历时,我们可以将ref放在循环元素上来获取对应元素的引用。具体实现方式如下所示:

<template>
  <div>
      <div v-for="(item, index) in list" :key="index" :ref="'item'+index">{{$index+1}}、{{item}}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: ['列表1','列表2','列表3']
    }
  },
  mounted() {
    for (let i = 0; i < this.list.length; i++) {
      console.log(this.$refs['item'+i][0].innerText);
    }
  }
}
</script>

在Vue2中,我们需要将ref绑定在循环元素中,同时要注意绑定时要加上冒号。我们可以在mounted函数中遍历整个数组,并通过this.$refs['item'+i][0]来获取对应的dom节点。

Vue3中v-for遍历时ref获取dom节点

在Vue3中,由于template标签已经失效,我们需要使用另外一种方式来获取dom节点引用,那就是使用v-for指令的ref标识符。具体实现方式如下所示:

<template>
  <div>
    <div v-for="(item, index) in list" :key="index" v-ref:item>{{$index+1}}、{{item}}</div>
  </div>
</template>

<script>
import { ref, onMounted } from 'vue'
export default {
  setup() {
    const list = ref(['列表1','列表2','列表3'])

    onMounted(() => {
      for (let i = 0; i < list.value.length; i++) {
        console.log('item'+i+':'+document.getElementById('item'+i).innerText);
      }
    })

    return {
      list
    }
  }
}
</script>

在Vue3中,我们需要将ref绑定在循环元素中,同时在绑定时不需要加上冒号。在mounted改为了onMountedthis.$refs改为了使用document.getElementById来获取dom节点。同时使用vue的ref函数来定义数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue2和Vue3在v-for遍历时ref获取dom节点的区别及说明 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • 使用Vue3进行数据绑定及显示列表数据

    下面我将详细讲解使用Vue3进行数据绑定及显示列表数据的完整攻略。 步骤一:创建Vue对象 首先,需要使用createApp方法创建Vue实例,并通过mount方法将Vue实例挂载到页面上。示例代码如下: “`html <div id="app"> <ul> <li v-for="item in …

    Vue 2023年5月28日
    00
  • 详解Vue之事件处理

    详解Vue之事件处理 Vue.js 是一款流行的前端框架,它的事件处理能力非常强大。本文将详细讲解 Vue.js 中的事件处理,包括如何使用 v-on 指令绑定事件、如何传递参数和修饰符、以及如何使用自定义事件等。 绑定事件 在 Vue.js 中,我们可以使用 v-on 指令来绑定事件。省略了 v-on 直接写 @ 符号,作用相同,下面的几个示例中直接使用 …

    Vue 2023年5月27日
    00
  • Vue动态表单的应用详解

    下面是关于“Vue动态表单的应用详解”的完整攻略。 简介 Vue动态表单的应用指的是根据不同的数据进行表单渲染,并可以根据用户的不同操作对表单进行相应的变动。这种技术通常被应用于一些需要根据不同的业务场景生成不同表单的场合,例如表单生成器、问卷调查等。 实现方法 实现 Vue 动态表单的关键在于动态渲染表单,引入 element-ui 的动态表单是实现这个功…

    Vue 2023年5月28日
    00
  • vue3配置全局参数(挂载全局方法)以及组件的使用

    下面是关于Vue 3中全局参数和组件的使用的攻略。 全局参数 1. 挂载全局方法 在Vue 3中,我们可以使用app.config.globalProperties来挂载全局方法,这个对象中的所有属性都会被添加到应用程序的实例中,并且可以在模板和实例方法中直接使用。例如: import { createApp } from ‘vue’; const app …

    Vue 2023年5月28日
    00
  • el-date-picker日期范围限制的实现

    下面我来详细讲解“el-date-picker日期范围限制的实现”的完整攻略。 创建日期范围限制的实现 在实现日期范围限制之前,需要使用 Element UI 中的 el-date-picker 组件来创建日期选择器。el-date-picker 组件可通过 picker-options 属性来设置自定义的配置项,从而实现日期范围限制。 <templa…

    Vue 2023年5月29日
    00
  • Vue中的计算属性介绍

    当我们需要根据现有的数据进行计算,得到新的数据时,我们可以使用计算属性来实现。计算属性是一个被绑定到Vue实例的属性,该属性的值是基于其他属性计算得来的。 计算属性默认情况下是帶getter和setter的,所以使用它来进行数据转换和过滤非常方便。 计算属性的特性:1. 计算属性计算的结果会被缓存,只有依赖的响应式属性发生改变才会重新计算;2. 计算属性是基…

    Vue 2023年5月27日
    00
  • Vue中使用jsencrypt进行RSA非对称加密的操作方法

    下面是关于“Vue中使用jsencrypt进行RSA非对称加密的操作方法”的攻略。 什么是RSA加密算法 RSA是当前最广泛使用的公钥加密算法之一,它是以三位数学家Rivest、Shamir、Adleman的名字命名的,RSA算法使用一对相互匹配的公钥和私钥进行加密和解密,其中公钥可以公开,私钥由用户自己保管。 如何使用jsencrypt进行RSA非对称加密…

    Vue 2023年5月27日
    00
  • 详解vue数据渲染出现闪烁问题

    让我们来详细讲解如何解决 Vue 数据渲染出现闪烁问题。 什么是 Vue 数据渲染出现闪烁问题 当 Vue 数据进行数据渲染时,我们可能会发现数据在渲染完毕后出现了短暂的闪烁问题,这个问题主要由于下面两个原因造成的: 在 mounted 钩子中执行 Ajax 请求或调用第三方的 API,页面需要等数据加载完毕才会显示,所以就会出现闪烁效果。 在 mounte…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部