为了账号安全,请及时绑定邮箱和手机立即绑定

vue.js 如何在页面渲染完后去操作dom,而且只执行一次?

vue.js 如何在页面渲染完后去操作dom,而且只执行一次?

梦里花落0921 2019-05-24 10:55:28
我想在页面渲染完执行我的代码,去操作dom。因为我把操作dom的写在加载数据的方法里面,发现是选不到dom的,应该是这个时候js还没执行完,页面还没渲染好。vue的created是实例创建完执行一次,但是这个时候去操作dom是选不到的。还有个update,这个倒是可以选到dom,但是这个每次都被执行啊,我只想在执行一次。对于这种需求,有没有什么好的解决方法?
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

在接口请求成功的回调里使用
this.$nextTick(()=>{
//在这里面去获取DOM
})。
在mounted生命周期,组件挂载成功,但还未渲染,自然获取不到相关的DOM节点。看你资料好像不是前端,举个更简单的例子,你在html中,把console.log(document.querySelector('body'))写在body标签前面,代码执行时机先于页面渲染,结果就是undefined。不推荐用updated,beforeUpdate生命周期,这2个生命周期只会在数据发生变化时才触发。如果你请求接口的数据是放在created生命周期(我推荐放在created里面去发起请求),初次进入页面是不会触发updated,beforeUpdate里面的代码。如果你非要要updated,并且希望第一次进入页面即可获取到DOM节点,那么请在mounted生命周期请求接口数据,而不是created了
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 492 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信