Vue生命周期

  • 为什么要有生命周期
    Vue为了在一个组件的从创建到销毁的一系列过程中添加一些功能,方便我们更好的去控制组件

       特别注意:钩子函数不要写成箭头函数,箭头函数可能会改变this指向
    
  • Vue的生命周期分为三个阶段,8个钩子函数(总共有11个函数)

初始化阶段

  1. 它们的公共特征

    • 组件一旦创建,自动执行
    • 执行一次
  2. 他们各自的特点 / 功能
    我会从下面几个方向研究: data中的数据是否能够获取,真实DOM是否能获取

    1. beforeCreate
      • 不能获取数据,也不能获取真实DOM
      • 它可以对new Vue()出来的时候,做初始化事件和生命周期做准备,这些都是内部完成的
      • 总结: 这个钩子我们在项目中可以不用
    2. created
      • 初始化data选项
        • 对data选项中的数据做数据劫持【 用es5 Object.defineProperty做getter和setter设置 】
      • 可以获取数据,但是不能获取真实DOM
        • 可以对数据做计算、转换、修改等操作
      • 总结: 数据请求,然后将请求的结果赋值给我们的数据
    3. beforeMount
      组件挂载前的准备工作
      • 判断是否有el,如果el,那么我们在去判断是否有template,如果都有,通过render函数将jsx渲染为VDOM,这里我们就有了VDOM,如果没有el,那么我们可以使用 $mount手动挂载,如果没有template选项,那么我们使用outerHTML手动写一个进去
      • 可以获得数据,不能得到真实DOM
        • 可以对数据做计算、转换、修改等操作
      • 总结: 数据请求,然后将请求的结果赋值给我们的数据,这个钩子我们就让它做内部事务去吧,不去用它
    4. mounted
      表示组件挂载结束,也就是生成的html已经插入页面结束了
      • 数据可以获取,真实dom也可以获取
        • 我们可以操作真实DOM,可以对数据做计算、转换、修改等操作

    总结:
    项目中
    数据请求 -> created/mounted
    DOM操作 -> mounted

面试题

  1. vue中数据请求往哪里写?
    数据请求初始化阶段都可以写
    数据的修改我们后三个钩子
    我习惯往mounted里面写
  2. vdom真正在哪里生成的?jsx在哪里解析的?真实dom哪里生成了?

更新阶段

触发条件: 数据改变

  1. beforeUpdate
    • 任务: 数据改变,重新生成vdom,然后通过diff算法得到patch补丁对象,自动完成任务
    • 总结: 不操作
  2. updated
    • 更新结束,那么肯定已经获取真实DOM,也就是说我们可以做真实dom操作了

总结:

  • 也就是我们在这个阶段使用updated钩子就行

销毁阶段

  • 销毁阶段钩子函数的作用是: 自动删除事件以及监听
  • 触发条件: 组件被销毁
    • 外部销毁: 开关【 v-if 】
    • 内部销毁; 调用 this.$destroy()
      • 内部销毁组件会被删除,但是组件的真实dom外壳会被遗留
  • 钩子函数有两个: 这两个钩子函数没有差别,任意用一个即可
    • beforeDestroy
    • destroyed
  • 手动操作的作用: 善后
    • 清除计时器、滚轮事件

错误捕获

errorCaptured

  • 当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值