VUE中$refs的基本用法

ref 有三种用法:

1、ref 加在普通的元素上,用this.$refs.(ref值) 获取到的是dom元素

2、ref 加在子组件上,用this. $refs.(ref值) 获取到的是组件实例,可以使用组件的所有方法。在使用方法的时候直接this.$refs.(ref值).方法() 就可以使用了。

3、如何利用 v-for 和 ref 获取一组数组或者dom 节点

应注意的坑:

1、如果通过v-for 遍历想加不同的ref时记得加 :号,即 :ref =某变量 ;
这点和其他属性一样,如果是固定值就不需要加 :号,如果是变量记得加 :号。(加冒号的,说明后面的是一个变量或者表达 式;没加冒号的后面就是对应的字符串常量(String))

2、通过 :ref =某变量 添加ref(即加了:号) ,如果想获取该ref时需要加 [0],如this.$refs[refsArrayItem] [0];如果不是:ref =某变量的方式而是 ref =某字符串时则不需要加,如this.$refs[refsArrayItem]

1、ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{}) 中调用。

2如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。

例子1:

添加ref属性

    <div id="app">
    <h1 ref="h1Ele">这是H1</h1>
    <hello ref="ho"></hello>
    <button @click="getref">获取H1元素</button> </div>

获取注册过 ref 的所有组件或元素

methods: {
        getref() {
          // 表示从 $refs对象 中, 获取 ref 属性值为: h1ele DOM元素或组件
           console.log(this.$refs.h1Ele.innerText);
           this.$refs.h1ele.style.color = 'red';// 修改html样式
 
          console.log(this.$refs.ho.msg);// 获取组件数据
          console.log(this.$refs.ho.test);// 获取组件的方法
        }
      }

例2 vue代码

   <img class="get_verification" 
        src="http://localhost:4000/captcha" 
        alt="captcha"
        @click="getCaptcha" 
        ref="captcha">
              
    methods: {
          getCaptcha () {
                   //   this.$refs.captcha  直接获取到Dom元素
                     this.$refs.captcha.src = 'http://localhost:4000/captcha?time='+Date.now()
            }
      }
表单中的input重置就需要使用ref属性

在这里插入图片描述

点击重置按钮时 需要获取到改属性对象
 this.$refs.loginForm.resetFields()  //即可完成重置
点击登录时 需要判断 验证通过或者失败会返回 false true
  this.$refs.loginForm.validate(valid=>{
          console.log(valid);
        })
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 3,`$refs` 是一个用于访问组件或DOM元素的实例的特殊属性。它可以让你直接访问组件实例或DOM元素,以便进行操作或获取其属性。 使用 `$refs` 的一般步骤如下: 1. 在模板给组件或DOM元素添加 `ref` 特性: ```html <template> <div> <my-component ref="myRef"></my-component> <div ref="myDomRef">Hello, world!</div> </div> </template> ``` 2. 在组件的方法或生命周期钩子函数使用 `$refs` 来访问组件实例或DOM元素: ```javascript export default { mounted() { const componentInstance = this.$refs.myRef // 访问组件实例 const domElement = this.$refs.myDomRef // 访问DOM元素 // 对组件实例进行操作 componentInstance.doSomething() // 获取DOM元素的属性 const textContent = domElement.textContent console.log(textContent) } } ``` 在上面的代码,`ref="myRef"` 将组件实例存储在 `$refs` 对象的 `myRef` 属性,而 `ref="myDomRef"` 则将DOM元素存储在 `$refs` 对象的 `myDomRef` 属性。 需要注意的是,当在`mounted`钩子函数访问 `$refs` 时,确保目标组件已经挂载完成,否则可能会得到 `undefined` 值。如果需要在其他生命周期钩子函数访问 `$refs`,请确保在合适的时机。 总之,`$refs` 是一个方便的属性,可以让你直接访问组件实例或DOM元素。但是,尽量避免在模板过度使用 `ref`,因为过多的 `ref` 可能会导致代码难以维护和理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端成长营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值