vue中$refs的使用记录

author author     2023-04-09     729

关键词:

参考技术A ref 目前使用过的三种方式:

1、在html的元素中使用rel,可在js中直接调用该元素,用this.$refs.(ref值) 获取到的是dom元素

2、在vue的组件上加rel,可在js中直接使用该组件包括该组件的方法,用this.$refs.(ref值).方法名()

3、在v-for的循环列中使用rel

避坑:

v-for中使用rel需要绑定 变量 ,即v-bind:rel='变量名'

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

如果rel循环未绑定变量,那就$refs获取获取数组再循环得到使用即可

例子1:在html元素上使用

<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:

<html部分

<view class="example-body">

<button class="button" type="primary" @click="togglePopup('top', 'popup')">顶部弹出 popup</button>

<button class="button" type="primary" @click="togglePopup('center', 'popup')">中间弹出 popup</button>

<button class="button" type="primary" @click="togglePopup('bottom', 'popup')">底部弹出 popup</button>

</view>

<uni-popup ref="showpopup" :type="type" @change="change"><text class="popup-content"> content </text></uni-popup>

<uni-popup ref="showtip" :type="type" :mask-click="false" @change="change">

<view class="uni-tip">

<text class="uni-tip-title">警告</text>

<text class="uni-tip-content">这是一个通过自定义 popup,自由扩展的 警告弹窗。点击遮罩不会关闭弹窗。</text>

<view class="uni-tip-group-button">

<text class="uni-tip-button" @click="cancel('tip')">取消</text>

<text class="uni-tip-button" @click="cancel('tip')">确定</text>

</view>

</view>

</uni-popup>

<js部分

methods:

togglePopup(type, open)

switch (type)

case 'top':

this.content = '顶部弹出 popup'

break

case 'bottom':

this.content = '底部弹出 popup'

break

case 'center':

this.content = '居中弹出 popup'

break



this.type = type

this.$nextTick(() =>

this.$refs['show' + open].open()

)

,

cancel(type)

this.$refs['show' + type].close()

,

change(e)

console.log('是否打开:' + e.show)



,

一般来讲获取DOM元素,需document.querySelector(".class")获取这个dom节点,然后在获取元素的值。

但是用ref绑定之后,我们就不需要在获取dom节点了,直接在上面的元素上绑定rel,然后$refs里面调用就行。

然后在javascript里面这样调用:this.$refs.元素绑定rel  这样就可以减少获取dom节点的消耗了

vue中ref和$refs的介绍及使用

...注册过ref特性的所有DOM元素和子组件实例当ref和v-for一起使用时,获取到的引用将会是一个数组,包含循环数组源【1】子组件code:【2】父组件code: 查看详情

在typescript+vue项目中使用ref

...ow的再引入jq,然后通过jq来操作,但是这样就失去了我们使用vue的意义另一个就是添加ref属性,对ref进行操作。好了完美解决。很不巧,新项目用的是vue还是vue+typeScript的,直接,单纯的this.$refs.xxx不好用了,报错,识别不了,... 查看详情

vue中ref的使用注意事项

...ef加在子组件上,用this.ref.name获取到的是组件实例,可以使用组件的所有方法。3.如何利用v-for和ref获取一组数组或者dom节点  查看详情

vue父组件中使用ref调用子组件中的方法

...ediaMonitor"然后,js中直接调用就可以了当ref和v-for一起使用的时候,你得到的ref将会是一个包含了对应数据源的这些子组件的数组。$ref只会在组件渲染完成之后生效,并且它们不是响应式的。这仅作为一个用于直接操作子组... 查看详情

初探vue的ref($ref)

...需要注意的ref是非相应的ref如果想是一个变量(for循环中使用),则组要使用:ref="xxx"指定 查看详情

vue之ref和$refs的使用

...会注册在父组件的$refs对象上,如果是在普通的DOM元素上使用,引用指向的就是DOM元素,如果是在子组件上,引用就指向组件的实例。  当在子组件或者DOM元素上写ref="xxx"时,vm实例上就有了一个$refs属性,包含了所有注册过ref... 查看详情

vue中ref获取不到dom问题解决,关于this.$nexttick的使用

...ef加在子组件上,用this.ref.name获取到的是组件实例,可以使用组件的所有方法。  3、利用v-for和ref获取一组数组或者dom节点效果图:1、ref需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期mounted(... 查看详情

关于vue中ref的使用方法(代码片段)

...具体ref的其他用法并没有深究,所以来了解一下ref的具体使用方法first:<divref="hello"><!--绑定了data里面的值并渲染到页面--><h1v-model="msg">msg</h1></div>//在方法或者生命周期的函数中获取数据console.log(this.$refs.he... 查看详情

在typescript+vue项目中使用ref(代码片段)

...ow的再引入jq,然后通过jq来操作,但是这样就失去了我们使用vue的意义,可惜的是我曾经这样干过,而且当时觉得我就是个天才。另一个就是添加ref属性,对ref进行操作。好了完美解决。很不巧,新项目用的是vue还是vue+typeScript... 查看详情

在 vue api 组合中,我应该在反应性中使用 ref 吗?

】在vueapi组合中,我应该在反应性中使用ref吗?【英文标题】:InvueapicompositionshouldIuserefinsidereactive?【发布时间】:2020-12-2221:28:15【问题描述】:在reactive在vueapi组合中,我应该使用ref还是不使用?是一样的吗?ref的作用是什么... 查看详情

this.$refs 使用 Vue 3 选项 API 为空

】this.$refs使用Vue3选项API为空【英文标题】:this.$refsemptywithVue3OptionsAPI【发布时间】:2021-06-1814:31:23【问题描述】:在Vue2中,我曾经能够访问子组件的属性(使用this.$refs和动态分配的:ref在v-for循环中呈现)。Vue3中的相同代码失... 查看详情

vue中ref和$refs

...在父组件的 $refs 对象上。如果在普通的DOM元素上使用,引用指向的就是DOM元素;如果用在子组件上,引用就指向组件实例:在上面的例子中,input的引用信息为input1,$refs是所有注册过的ref的一个集合,console.log(this.$refs.i... 查看详情

vue3中使用$refs(代码片段)

在vue2中,如果想直接引用页面中的对象,是这样子的:<template><div><inputtype="text"ref="txt1"value="hello"/></div></template><script&g 查看详情

vue3中使用$refs(代码片段)

在vue2中,如果想直接引用页面中的对象,是这样子的:<template><div><inputtype="text"ref="txt1"value="hello"/></div></template><script&g 查看详情

vue3ref函数

...了compositionAPI,setup函数是其核心函数在setup函数中,可以使用ref函数,用于创建一个响应式数据,当数据发生改变时,Vue会自动更新UI例如:使用ref函数定义一个变量count然后在组件中引入该模块:importuseChangeCountfrom"./composition... 查看详情

Vue - 使用 ref 访问嵌套的孩子

】Vue-使用ref访问嵌套的孩子【英文标题】:Vue-accessnestedchildsusingref【发布时间】:2018-09-1512:42:23【问题描述】:我有自己内部使用的vue组件-数据可以有带有子元素的数组,我使用这个数组根据嵌套级别在循环中渲染它们,以及... 查看详情

vue.js中ref($refs)用法举例总结及应注意的坑

参考技术A看Vue.js文档中的ref部分,自己总结了下ref的使用方法以便后面查阅。HTML部分js部分HTML部分JS部分HTML部分JS部分HTML部分JS部分1、如果通过v-for遍历想加不同的ref时记得加:号,即:ref=某变量;这点和其他属性一样,如果是固... 查看详情

vue中ref的作用

参考技术Avue中的ref其实功能很强大,下面介绍一下如何使用。一、基本用法,本页面获取dom元素其实ref除了可以获取本页面的dom元素,还可以拿到子组件中的data和去调用子组件中的方法二、获取子组件中的data子组件父组件三、... 查看详情