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

yizhihongxing

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八大生命周期钩子函数

    一文搞懂Vue八大生命周期钩子函数 Vue组件的生命周期分为8个阶段,每个阶段都有对应的钩子函数,这些钩子函数可以让我们在组件的不同生命周期阶段做出相应的操作。以下是八大生命周期钩子函数: 1. beforeCreate 在实例化Vue对象之前,会先执行beforeCreate钩子函数。在这个阶段,实例的属性、方法等都没有被初始化,因此在这个钩子函数中不能访…

    Vue 2023年5月28日
    00
  • vue+moment实现倒计时效果

    实现倒计时效果是前端项目中常见的需求。本文将介绍如何使用vue和moment.js库实现倒计时效果,并提供两个示例进行说明。 步骤一:安装moment.js库 在使用moment.js库之前,我们需要先进行安装。具体步骤如下: npm install moment –save 这样就可以在vue项目中使用moment.js库了。 步骤二:在vue组件中引入…

    Vue 2023年5月29日
    00
  • vue运行卡死的问题

    当我们在使用 Vue 进行开发时,有时候会遇到页面暂时无法响应,或者整个页面都卡死的情况。这种情况可能是由于 Vue 中存在的一些错误所引起的,接下来我将讲解几种可能引起卡死的问题,并提供解决方法。 1. 大量数据循环渲染 如果你在 Vue 中使用列表渲染时,如果列表数据的数据量非常大,比如几百上千条数据,那么页面渲染的速度就会非常缓慢,甚至会卡死。 解决方…

    Vue 2023年5月27日
    00
  • 详解vuex commit保存数据技巧

    下面是详解vuex commit保存数据技巧的完整攻略。 简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以预测的方式的改变应用状态。vuex 提供了 commit 方法用来操作 vuex 的 state 对象中的数据。 commit 方法 commit方法是vuex中的一个核心方法,它用来提…

    Vue 2023年5月27日
    00
  • 浅谈父子组件传值问题

    浅谈父子组件传值问题 在Vue.js应用中,经常需要在组件之间传递数据,特别是在父子组件之间。这篇文章将讨论一些 Vue.js 中父组件和子组件之间数据传递的方法和技巧。 父组件通过 props 向子组件传递数据 通过 props,父组件可以向子组件传递数据。 <template> <div> <ChildComponent m…

    Vue 2023年5月28日
    00
  • 详解vue-cli 2.0配置文件(小结)

    下面来详细讲解“详解vue-cli 2.0配置文件(小结)”的完整攻略。 什么是vue-cli 2.0配置文件 vue-cli是Vue.js官方提供的一个基于Webpack构建工具的脚手架,用于快速搭建Vue.js项目的基础架构。在Vue.js 2.0版本之前,vue-cli默认使用的是基于Webpack1.x版本的构建工具,因此配置文件也是基于这个版本进行…

    Vue 2023年5月27日
    00
  • Vue无法访问.env.development定义的变量值问题及解决

    下面我将为您详细讲解 Vue 中无法访问 .env.development 定义的变量值问题及解决的完整攻略。 问题背景 在开发 Vue 网站时,我们通常需要配置环境变量,用于在不同环境中读取不同的配置信息。而在 Vue 中,我们可以通过在项目根目录下创建名为 .env、.env.local、.env.development 等文件来定义环境变量。 然而,在…

    Vue 2023年5月28日
    00
  • Vue路由传参的三种方式实例详解

    当我们使用Vue框架进行开发时,Vue路由传参是一项非常常见的操作,可以通过多种方式进行实现。本篇攻略将为大家介绍Vue路由传参的三种具体实例,帮助开发者更好地了解和掌握Vue路由传参的使用方法。 路径参数 路径参数是一种常见的路由传参方式,它可以将参数添加到URL的路径中,如下: const router = new VueRouter({ routes:…

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