【vue2第十二章】ref和$refs获取dom元素 和 vue异步更新与$nextTick使用
创始人
2024-11-10 17:39:50
0

ref和$refs获取dom元素

为什么会有 ref 和 $refs?

因为在vue页面中使用dom查找元素,不管你是不是在子组件里面查找,查找的都是整个页面的元素,如果你想查找单独组件里面的元素是不容易实现的,除非把每个组件的class写成独一无二,但是在日常开发中,一个vue页面不知道会有多少组件,所以出现了relrefs.

ref 和 $refs 作用
在这里插入图片描述

ref 和 $refs 使用

通过在要获取的元素上面店家rel属性 rel="名称"
然后在要获取此元素的js代码上通过 this.$rels.名称 就可以获取。

如此获取的就是当前组件内部的标签了,

  

也是成功的获取到了并且打印出来:
在这里插入图片描述

vue异步更新和$nextTick使用

什么是vue的异步更新?
Vue的异步更新是指在Vue的响应式系统中,更新组件的方式是异步的。这意味着当数据发生变化时,Vue并不立即更新组件的DOM,而是等到同一事件循环中的所有数据变化完成后,再统一进行一次更新操作。

vue的异步更新好处
Vue之所以采用异步更新的机制,是为了优化性能和避免不必要的重复渲染。当数据发生变化时,Vue会将变化加入到一个队列中,然后通过异步的方式批量处理这些变化。这样可以避免频繁的DOM操作,提高性能。

异步更新还带来一个重要的好处,即在同一个事件循环中,多处对同一数据进行修改时,只会触发一次更新操作。这样可以减少重复的计算和渲染,提升性能。

总结来说,Vue的异步更新可以提高性能和优化渲染,使得组件更新更加高效和灵活。

案列:
我需要点击编辑按钮 然后显示input框 并且聚焦到input框上。
在这里插入图片描述
我的代码是这样的:

   

然后我点击编辑按钮出现了下面的错误,说我的this.$refs.inp是 undefined。
在这里插入图片描述
为什么 “显示之后“ 立刻获取焦点没有成功呢?
就是vue采用的是异步更新的机制,当 //显示input框 this.isShow = true时并没有马上去更新页面的dom,而是等待这个方法执行完成再去进行更新页面,所以导致获取的this.$refs.inp是 undefined。所以问题就是在我在它没有更新dom的时候就去获取dom,所以是undefined.

如何解决?(使用$nextTick

   

最后成功聚焦,并且控制台输出了当前获取标签:
在这里插入图片描述

相关内容

热门资讯

透视能赢!aapoker怎么选... 透视能赢!aapoker怎么选牌(透视)公共底牌(果然真的是有挂)1、aapoker怎么选牌系统规律...
透视安装!wepoker辅助器... 透视安装!wepoker辅助器安装包,aapoker破解侠是真的吗(透视)本然真的是有挂(专业教程)...
透视新版!sohoo poke... 透视新版!sohoo poker辅助器,德州来玩辅助器,好像有挂(详细教程)1、游戏颠覆性的策略玩法...
透视教学(WPK)切实有挂(透... 透视教学(WPK)切实有挂(透视)wpk辅助(微扑克教程)1、每一步都需要思考,不同水平的挑战会更加...
透视免费!aapoker辅助工... 透视免费!aapoker辅助工具安全吗(透视)ai插件(本来有挂)一、aapoker辅助工具安全吗A...
透视存在!红龙poker有辅助... 透视存在!红龙poker有辅助吗,steampokermaster辅助,好像真的有挂(详细教程)1、...
透视安装!有没有人wepoke... 透视安装!有没有人wepoker,we poker辅助器(透视)固有有挂(存在挂教程)一、有没有人w...
透视攻略(WPK)其实真的是有... 透视攻略(WPK)其实真的是有挂(透视)wpk透视插件(2025新版教程)所有人都在同一条线上,像星...
透视透视!wepoker透视有... 透视透视!wepoker透视有吗,德州之星扫描器,真是真的是有挂(切实教程);德州之星扫描器辅助器中...
透视安装!aa poker辅助... 透视安装!aa poker辅助(透视)破解侠是真的(好像是有挂)1、玩家可以在aa poker辅助软...