首页 > 其他分享 >Vue面试题03:Vue生命周期相关

Vue面试题03:Vue生命周期相关

时间:2022-08-18 10:57:58浏览次数:54  
标签:03 面试题 Vue 生命周期 created setup 实例 组件

生命周期相关

  • 定义:每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如数据监测,模板编译,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中会运行被称为生命周期钩子的函数,让开发者可以在特定阶段运行自己的代码。

  • Vue生命周期总共分为8个阶段:创建前后、挂载前后、更新前后、销毁前后,以及一些特殊场景的生命周期,Vue3新增了3个用于调试和服务端渲染场景。

    Vue2 Vue3 描述
    beforeCreate beforeCreate 组件实例被创建之初
    created created 组件实例已完成创建
    beforeMount beforeMount 组件挂载之前
    mounted mounted 组件挂载到实例上之后
    beforeUpdate beforeUpdate 组件数据发生变化、更新之前
    updated updated 组件数据更新之后
    beforeDestroy beforeUnmounted 组件实例销毁之前
    destroyed unmounted 组件实例销毁之后
    activated activated keep-alive缓存的组件激活时
    deactivated deactivated keep-alive缓存的组件停用时调用
    errorCaptured errorCaptured 捕获一个来自子孙组件的错误时被调用
    - renderTracked 调试钩子,响应式依赖被收集时调用
    - renderTriggered 调试钩子,响应式依赖被触发时调用
    - serverPrefetch ssr only,组件实例在服务器上被渲染前调用
  • 结合实践

    • beforeCreate:通常用于插件开发中执行一些初始化任务(比如向App实例注入全局变量、全局属性等);

    • created:组件初始化完毕,可以访问各种数据,获取接口数据等;

    • mounted:dom已创建,可用于获取访问数据和dom元素、访问子组件等;

    • beforeUpdate:此时view层还未更新,可用于获取更新前各种状态;

    • updated:完成view层的更新,更新后,所有状态已是最新;

    • beforeunmounted:实例被销毁前调用,可用于一些定时器或订阅的取消;

    • unmounted:销毁一个实例,可清理与其它实例的连接,解绑它的全部指令及事件监听器;

  • tips1:setup和created谁先执行?为什么setup中没有beforeCreate和created?

    • setup最先执行,此时组件实例在setup内部已经创建,所以created的处理对于setup来讲明显在后面,对于开发者来说已经没有意义, 所以setup中没必要再使用beforeCreate和created。
  • 官方最新生命周期示意图

标签:03,面试题,Vue,生命周期,created,setup,实例,组件
From: https://www.cnblogs.com/Mochenghualei/p/16597919.html

相关文章

  • django插入数据库报错 1366, "Incorrect string value: '\\xF0\\x9F\\x9A\\xA
     报错: 1366,"Incorrectstringvalue:'\\xF0\\x9F\\x9A\\xA8 是因为mysql不能识别4个字节的utf8编码的字符,抛出了异常,这应该也是问题的根源。☺、��、类似于这种4个字......
  • 认识Vue扩展插件
    众所周知,在Vue开发中,实现一个功能可以有很多种方式可以选择,这依赖于Vue强大的功能(指令、混合、过滤等)Vue插件插件通常用来为Vue添加全局功能。插件的功能范围没......
  • vue中改变数组对象属性名名称
    letnape=[];for(leti=0;i<list.length;i++){letres=JSON.parse(JSON.stringify(list[i])......
  • vue 入门
    idea、webstorm、vsCode,都可以开发吧,脚手架vue-cli项目框架一搭建,就写代码了 --关于vue需要掌握的知识点--- 使用的开发工具是webstorm,它是默认就安装好了vuejs......
  • vue数据双向绑定
    vue数据双向绑定 <divid="app">单向数据绑定:<inputtype="text"v-bind:value="txt"><br><br>双向数据绑定:<inputtype="text"v-model:va......
  • vue学习之------vue-router【命名路由】
    命名路由的概念:就是在定义路由规则时,为当前规则去一个名称,增加name属性。name属性不能重复,必须保证唯一性~ (1)用命名路由实现声明式导航  (2)命名路由实现编程......
  • vue学习之------vue-router【编程式导航】
    通过调用API实现导航的方式,叫编程式导航。通过点击链接实现导航的方式,叫声明式导航。 (1)跳转到指定地址的API:this.$router.push('hash地址')(2)实现导航历史的前进、......
  • vue学习之------vue-router【动态路由】
    动态路由的概念:把hash地址中的可变部分用【英文冒号(:)+参数】的形式进行定义获取动态路由的参数值:(1)第一种获取方式:可以直接使用$route.params对象访问到动态匹配的参数......
  • Vue 数据绑定
    数据绑定案例1:<divid="app"><h1><a:href="url">{{name}}</a></h1></div>  <script>    newVue({  ......
  • Error: Failed to download metadata for repo 'appstream': Cannot prepare internal
    报错:Error:Failedtodownloadmetadataforrepo'appstream':Cannotprepareinternalmirrorlist:NoURLsinmirrorlist原因: CentOS已经停止维护的问题官方:http......