[跳槽必备] vue面试题 - 生命周期

335 阅读1分钟

vue面试题 - 生命周期

一、生命周期

总共分为8个阶段

(1)创建前/后

(2)载入前/后

(3)更新前/后

(4)销毁前/后

    1.1 创建前/后 

    1)beforeCreate 阶段
        vue实例的挂载元素el和数据对象data都是undefined,还未初始化
        说明:data、methods、computed、watch上的数据和方法都不能被访问
    2)created阶段
        vue实例的数据data有了,但是el还没有
        可以做一些初始化数据的获取,或者ajax接口调用,但是无法与dom进行交互,当然如果非要操作,可以用vm.$nextTick
 
 
   1.2 载入前/后
   1) beforeMount阶段 
       vue实例的挂载元素el和数据对象data都初始化,虚拟dom节点创建完成
       说明:即将开始渲染到页面。
   2)mounted阶段
       vue实例挂载完成,data成功渲染
       说明:真实dom挂载完毕,数据完成双向绑定,可以访问dom节点,使用$refs属性对dom进行操作
  
  
   1.3 更新前/后
   1)beforeUpdate阶段 
      虚拟dom重新渲染前,data的值发生改变调用
   2)updated阶段
      虚拟dom重新渲染完成
      
      
   1.4 销毁前/后
   1) befoeDestroy阶段
       实例销毁前调用,常用于销毁定时器,解绑事件,data和methods都可以使用
   2) destroyd阶段
       实例销毁后,data和methods都不可以用

第一次加载时会触发

beforeCreate -> created -> beforeMount -> mounted

1)created (数据请求)

2)mounted (操作dom)

为什么不在mounted中获取请求

请求数据可能导致页面闪屏问题,加载时机问题,放在created里会比mounted触发早一点