vue 销毁阶段之前没法获得dom元素宽度

发布于 2022-09-04 09:43:59 字数 1308 浏览 14 评论 0

<template>
  <a class="parentA uk-panel uk-panel-hover algo-progress" >
    <slot name="content"></slot>
  </a>
</template>
<script>
  export default{
    init() {
      console.log("init 实例开始初始化:");
      console.log($(".parentA").width());
    },
    created() {
      console.log("created 实例创建后:");
      console.log($(".parentA").width());
    },
    beforeCompile() {
      console.log("beforeCompile:");
      console.log($(".parentA").width());
    },
    compiled() { 
      console.log("compiled:");
      console.log($(".parentA").width());
    },
    attached() {  
      console.log("attached 插入DOM成功:");
      console.log($(".parentA").width());
    },
    ready() { 
      console.log("ready 一切准备好了:");
      console.log($(".parentA").width());
    },
    beforeDestroy() {  
      console.log("beforeDestroy 销毁前:");
      console.log($(".parentA").width());
    },
    destroyed() {   
      console.log("destroyed 已销毁:");
      console.log($(".parentA").width());
    },
    detached() { 
      console.log("detached 删除DOM成功:");
      console.log($(".parentA").width());
    },
  }
</script>

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

jJeQQOZ5 2022-09-11 09:43:59

试下使用 this.$nextTick()

谜兔 2022-09-11 09:43:59

vue执行和dom渲染应该是两个进程,vue是进程1,dom渲染是进程2,可以用setTimeout新建一个进程获取dom宽度。划个图
vue-1----------->
dom-------------2------->
setTimeout-3-------------3--->
----1-----------2--------3--->

我觉得this.$nextTick()本质和setTimeout应该是差不多,只是nextTick可以监控到vue进程执行情况,更可控一点。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文