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

yizhihongxing

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日

相关文章

  • Vue项目中Api的组织和返回数据处理的操作

    下面我来详细讲解“Vue项目中Api的组织和返回数据处理的操作”的完整攻略。 Api的组织 在Vue项目中,可以把Api统一组织到一个单独的文件夹中,比如api文件夹。在该文件夹下,可以按照不同的模块或功能,再分别创建不同的文件来管理相关的Api,比如user.js用于管理用户相关的Api,product.js用于管理商品相关的Api等。 下面是一个示例,创…

    Vue 2023年5月28日
    00
  • vue中实现拖拽排序功能的详细教程

    为了详细讲解“Vue中实现拖拽排序功能的详细教程”,下面我将提供以下步骤: 步骤一:使用插件 Vue中实现拖拽排序功能,可以使用一些优秀的插件,例如vuedraggable和sortablejs,我们选择使用vuedraggable插件。 npm install vuedraggable –save 步骤二:加载插件并设置参数 在需要实现拖拽排序功能的组件…

    Vue 2023年5月27日
    00
  • 简单了解Vue computed属性及watch区别

    下面就是“简单了解Vue computed属性及watch区别”的完整攻略。 一、computed属性 在Vue中,computed属性是一个带有缓存的计算属性,也就是说,computed属性只会在它依赖的数据发生变化时才会重新计算一次,否则会直接返回之前缓存的结果。 1.1 定义computed属性 computed属性的定义类似于Vue的数据属性,你可以…

    Vue 2023年5月28日
    00
  • Vue-router的使用和出现空白页,路由对象属性详解

    Vue-router是Vue.js官方的路由管理器,可以快速地搭建单页面应用程序(SPA),并提供了丰富的导航解决方案。 Vue-router的使用 1. 安装和引入 安装Vue-router可以使用npm或yarn,在项目目录下运行以下命令: npm install vue-router 安装完成后,在项目中引入Vue-router: import Vue…

    Vue 2023年5月28日
    00
  • Vue获取表单数据的方法

    当使用Vue开发Web应用时,我们经常需要从表单中获取用户输入的数据。下面是几种Vue获取表单数据的方法的完整攻略: 1.使用v-model指令获取表单数据 我们可以在表单元素上使用v-model指令,Vue会自动为我们管理和更新表单元素的值。要使用v-model指令获取表单值,我们需要为表单元素绑定v-model指令,将其值绑定到Vue组件实例中的一个属性…

    Vue 2023年5月27日
    00
  • 五分钟带你快速了解vue的常用实例方法

    五分钟带你快速了解Vue的常用实例方法 什么是Vue实例方法 Vue实例是Vue应用中最基本的组成部分,实例是通过创建Vue实例对象来实现的。Vue实例方法是在Vue实例对象中定义的方法,这些方法可以让我们方便地操作Vue实例对象。 Vue实例的常用实例方法 1. $set $set方法是用来在Vue实例中设置一个新的属性或修改一个已有的属性的值。这个方法可…

    Vue 2023年5月28日
    00
  • vue中如何给静态资源增加路由前缀

    在 Vue 中,我们通常将静态资源放在 public 目录下,这些静态资源可以是样式表、脚本、图片、字体等文件。在访问这些静态资源时,我们可以给它们增加路由前缀,以便更好地管理和部署我们的应用程序。 一种实现方式是通过修改 vue.config.js 文件,该文件是 Vue CLI 3.x 新增的配置文件,用于存放项目构建配置。我们可以在 publicPat…

    Vue 2023年5月28日
    00
  • vue.js数据绑定的方法(单向、双向和一次性绑定)

    Vue.js是一款流行的JavaScript框架,提供多种数据绑定方法,包括单向绑定、双向绑定和一次性绑定。本文将详细介绍这些方法的原理和使用方法,以及提供两个示例进行说明。 单向绑定 单向绑定是指数据只能从数据模型流向视图,不能反过来。Vue.js通过一个指令v-bind实现单向绑定。该指令的基本语法为:v-bind:属性名=”data” 下面是一个简单的…

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