vue.js中ref和$refs的使用及示例讲解

Vue.js中ref和$refs的使用及示例讲解

什么是ref

在Vue.js中,ref是用来获取元素或组件标识的指令,相当于“id”或“class”属性,我们可以在Vue实例中通过$refs对象访问它们。主要有以下两种用法:

1.在DOM元素上使用ref

在DOM元素上使用ref可以获取DOM节点元素,我们可以通过引用这个DOM节点元素,使用原生JavaScript或其他框架来操作它。

<template>
  <div>
    <input type="text" ref="username">
  </div>
</template>
<script>
export default {
  mounted() {
    console.log(this.$refs.username); //打印出输入框DOM元素
    this.$refs.username.focus(); //使输入框获得焦点
  }
}
</script>

2.在组件上使用ref

在组件上使用ref可以获取组件实例,我们可以通过引用这个实例,调用组件上的方法或访问其数据属性。

<template>
  <div>
    <child ref="mychild"></child>
  </div>
</template>
<script>
import child from './child.vue';
export default {
  components: {
    child
  },
  methods: {
    callChildMethod() {
      this.$refs.mychild.minus(); //调用子组件中的minus方法
      console.log(this.$refs.mychild.msg); //打印子组件的msg数据
    }
  }
}
</script>

$refs的使用注意事项

$refs只在组件渲染完成后才能访问到,所以在Vue实例的mounted钩子函数或组件的mounted钩子函数中使用$refs才能取到对应的元素或组件的实例。

在生命周期的其它钩子函数中(如created和updated等),$refs的值为undefined,因为渲染阶段还没有完成。

需要注意的是,当在循环中使用ref时,$refs返回的将是一个包含相应DOM元素或组件实例的数组

<template>
  <div>
    <div v-for="(item, index) in list" :key="index" ref="box">{{ item }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      list: [1, 2, 3]
    }
  },
  mounted() {
    console.log(this.$refs.box); //返回一个数组,包含三个对应DOM元素
  }
}
</script>

示例说明

获取input输入框的值

<template>
  <div>
    <input type="text" ref="username" @keyup.enter="handleClick">
    <button @click="handleClick">点击</button>
    <p>输入的值为:{{ value }}</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      value: ''
    }
  },
  methods: {
    handleClick() {
      this.value = this.$refs.username.value;
    }
  }
}
</script>

首先在模板中给输入框添加ref属性,然后在Vue实例中使用this.$refs.username获取DOM元素,最后通过DOM节点元素的value属性获取输入框的值。

调用子组件方法

<template>
  <div>
    <child ref="mychild"></child>
    <button @click="handleClick">点击</button>
  </div>
</template>
<script>
import child from './child.vue';
export default {
  components: {
    child
  },
  methods: {
    handleClick() {
      this.$refs.mychild.minus();
    }
  }
}
</script>

首先在模板中给子组件添加ref属性,然后在Vue实例中使用this.$refs.mychild获取组件实例,最后通过组件实例的minus方法进行减法操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue.js中ref和$refs的使用及示例讲解 - Python技术站

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

相关文章

  • vue axios请求成功却进入catch的原因分析

    当使用Vue框架中的Axios发送异步请求时,有时候我们会碰到请求成功后却进入了catch方法中的问题,主要的原因有以下几种: 1. 状态码不为200 在Axios中,当返回的状态码不为200时,axios的then()方法不会被调用,而是直接进入catch()方法中。可以在catch()方法中输出错误信息,确定错误的类型,例如404错误、500错误等等。 …

    Vue 2023年5月28日
    00
  • vue 导出文件,携带请求头token操作

    让我详细讲解一下 “vue 导出文件,携带请求头token操作” 的完整攻略。 导出文件 要导出文件,我们可以利用浏览器提供的 download 和 Blob API 来实现。具体的步骤如下: 创建一个 Blob 对象,存储文件的内容。我们可以使用 new Blob() 方法来创建一个 Blob 实例。通常我们需要将要导出的内容以字符串形式传递给 Blob …

    Vue 2023年5月27日
    00
  • 详解关于Vue单元测试的几个坑

    我来详细讲解一下“详解关于Vue单元测试的几个坑”的完整攻略。 1. 前置条件 在进行Vue的单元测试之前,需要安装Vue Test Utils和Jest两个库,这两个库用于进行Vue单元测试的框架和运行环境。 安装Vue Test Utils和Jest: npm install –save-dev @vue/test-utils jest 2.安装Vue…

    Vue 2023年5月29日
    00
  • vue中push()和splice()的使用解析

    Vue中push()和splice()的使用解析 在Vue中,使用push()和splice()可以对数组进行增删改操作。本篇攻略将对这两个方法进行详细解析,并给出至少两个示例来说明使用这两个方法。 push() 的使用解析 push() 方法可以向数组的末尾添加新的元素,并返回数组的新长度。其语法如下: array.push(item1, item2, .…

    Vue 2023年5月28日
    00
  • Vue + better-scroll 实现移动端字母索引导航功能

    让我为你详细讲解“Vue + better-scroll 实现移动端字母索引导航功能”的完整攻略。 简介 better-scroll 是一款移动端的滚动库,可以使包裹内容的容器进行滚动并提供丰富的滚动特效。同时,Vue 是一款非常流行的前端框架,能够方便地将应用程序的数据和用户界面组件化,以及提供方便的指令和组件功能。在本攻略中,将 Vue 和 better…

    Vue 2023年5月27日
    00
  • vue实现组件值的累加

    下面分享一下关于Vue实现组件值的累加的攻略。 1. 问题描述 在Vue应用中,经常需要使用组件来实现可重用的代码,其中组件拥有自己的状态和行为。而在某些情况下,需要将不同组件的状态进行累加,如何实现呢? 2. 解决方案 在Vue中,可以使用prop和事件来实现组件之间的通信,通过父子组件之间的交互,来实现组件值的累加。下面,通过简单示例来帮助解决这个问题。…

    Vue 2023年5月27日
    00
  • vue中的get方法\post方法如何实现传递数组参数

    传递数组参数是前端开发中非常常见的需求,vue中的get和post方法也是我们日常开发中最常使用的API请求方式之一。下面是具体步骤: 一、利用axios的方式发送请求(Vue-Axios) 安装axios和Vue-Axios npm install axios vue-axios –save 在Vue中全局引入axios import Vue from …

    Vue 2023年5月29日
    00
  • 关于Vue 监控数组的问题

    关于Vue 监控数组的问题,我们可以通过 Vue 中的 computed 属性和 watch 属性来完成监控数组的操作。 监听数据的变化 Vue 提供了一种方法,以便自动跟踪数组的变化。这个方法是使用 Vue.set 或者是修改数组的长度来改变数组变化。在这个方法之后,组件会自动地更新记录数组。在实际应用中,我们常常使用 Array.push()、Array…

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