Vue 解决通过this.$refs来获取DOM或者组件报错问题
1.关于this.$refs的使用场景
如果ref属性加在普通元素上,那么this.$refs.name则指向该DOM元素
<p ref="p">hello</p>
<!-- this.$refs.p 指向该DOM元素 -->
如果ref属性加在组件上,那么this.$refs.name指向该组件实例
<child-ponent ref="child"></child-ponent>
<!-- this.$refs.child 指向该组件 -->
2.为什么有时候通过this.$refs.name来获取会报错?
一个比较常见的场景在一个弹窗打开的时候立刻通过this.$refs来获取内容就会出现xxx is undefined的错误
因为ref本身是作为渲染结果被创建的,在渲染的时候是不能访问的,因为他们还不存在!
如果此时代码是需要这样来写代码,那么你可以在DOM渲染完毕后再进行获取
this.$nextTick(() => { this.$refs.name... //DOM渲染完毕后就能正常获取了 })
补充知识vue ref用法(this.$refs获取为空)
//6.14更新
有个办法,我们可以使用
this.$nextTick(() => { // todo }) setTimeout(() => { // todo }, 0)
来得到数据
ref
本身作为渲染结果被创建,在初始渲染的时候不能访问他们,是不存在的
$refs不是响应式的,只在组件渲染完成后才填充
用于元素或子组件注册引用信息,注册完成,将会注册在父组件$refs对象上
如果你获取到的总是空的,你注意一下
1、你在哪里调用,和你调用的对象
试试在mounted()里面调用有效果没有
调用的对象是本来就存在的,还是需要数据渲染之后才会出现的,同理,在mounted()里面调用看看
2、调用对象是不是数组列表
我一开始设置ref在v-for列表上,直接获取this.$refs.name.style,永远是空的,
后来才发现,this.$refs.name是一个数组,无法通过 .style 获取样式,
只能遍历这个this.$refs.name数组,在this.$refs.name[index]上设置样式
// 6.14 更新,这个说法有点问题
像高度宽度,可以通过offsetHeight,等来获取。
3、调用对象是否和v-if结合使用
ref不是响应式的,所有的动态加载的模板更新它都无法相应的变化。
在使用中,我发现$refs.style只能设置该对象的样式,获取出来的值都是空的
以上这篇Vue 解决通过this.$refs来获取DOM或者组件报错问题就是长沙网络推广分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程