我想在页面渲染完执行我的代码,去操作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了
添加回答
举报
0/150
提交
取消