vue中更新了dom而并未获取实时url地址问题

关于使用videoplayer封装后的父子组件,无法播放的问题

内核是vue中更新了dom而并未获取实时url地址问题

一.需求
在这里插入图片描述

在这种大数据看板中,我们需要播放m3u8视频流,封装了一个videoplayer组件作为视频播放器,采用的是父子传值的方式。封装的videoplayer组件是子组件,主页面使用的videohls是父组件。
在这里插入图片描述
二.出现问题
在这里插入图片描述
最先开始一直播放不了,如上图,先排查原因,以为是动态的url在父子传值之中传值成功的原因,但在监听事件中又发现能接收到这个地址
在这里插入图片描述
同时也发现只要注释掉这个console.log然后vue页面生成自动刷新以后就可以播放,但是自己手动刷新以后又不播放。
三.得出结论
vue是异步加载的,我们的url又是动态获取的,所以加载了dom以后,url并没有得到及时的更新,也就是动态数据并未实时更新,而重新更改vue以后整个页面又可以播放就说明在dom加载以后重新加载vue以后就可以重新赋值到dom上,说明就是dom加载以后缺少一个把url重新再次赋值上去的操作,此时就应该用nextTick事件。
四.解决方案和心得
在watch监听以后,采用nextTick事件重新将url再赋值上去
在这里插入图片描述
很少使用到nextTick事件,查询发现nextTick的原理是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的DOM。
放在我这里的原理就是在dom加载完成以后,watch事件里面获取到父组件传过来的url以后就又重新把这个url放在播放器上再次获取有url以后的dom并渲染。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值