码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue生命周期


    目录

    生命周期:

     案例: 编写入口js文件,创建Vue实例,并定义生命周期图内的钩子函数,测试钩子函数的各个运行时机?

    1、验证beforeCreate

     2、验证created

     3、验证beforeMount

      4、验证mounted

      5、验证beforeUpdate和updated

      6、验证beforeUpdate和updated

     案例原代码:


    生命周期:

    每一个 Vue 实例从创建、运行、到销毁的一次完整过程,称之为生命周期,在这个过程中间,伴随着各种各样的事件,这些事件,称之为生命周期事件(生命周期函数、生命周期钩子),我们了解这些函数的时机,可以帮助我们在合适的位置去编写功能代码。
    比如:要获取数据的时候,应该在哪里发送请求?
    Vue 生命周期,最直观的方式就是官网的一张图
    生命周期钩子 | Vue.jsVue.js - 渐进式的 JavaScript 框架https://cn.vuejs.org/guide/essentials/lifecycle.html#lifecycle-diagram
      

    • beforeCreate: Vue实例创建前,此时data 和 methods 中的 数据都还没有没初始化
    • created:Vue实例已创建,data 和 methods 都已经被初始化好了
    • beforeMount: html模板已准备内存中,但未渲染到页面,此时无法进行dom操作
    • mounted: html模板已挂载到了页面中,此时可以进行 dom操作
    • beforeUpdate:当data数据改变的时候执行的钩子函数, 此时,页面中的显示的数据,还是旧的,此时 data 数据是最新的,页面尚未和 最新的数据保持同步
    • updated:updated 事件执行的时候,页面和 data 数据已经保持同步了,都是最新的
    • beforeDestory: vm实例被销毁前,此时data和methods等还可用
    • destoryed:vm实例已销毁, data和methods等所有属性都已经不可用

     案例: 编写入口js文件,创建Vue实例,并定义生命周期图内的钩子函数,测试钩子函数的各个运行时机?

    1、创建项目(create+项目  /  vue ui)

    参考:

     VS code创建Vue项目 方法1:create+项目_Siobhan. 明鑫的博客-CSDN博客

    Vue指令综合案例——汽车品牌管理_Siobhan. 明鑫的博客-CSDN博客

     

     在这里依然选择vue2创建项目

    同样,我们修改package.json下的规则、以及启动方式,并将vue结构删除不用的部分,修改main.js中的基础结构。详细参考Vue指令综合案例——汽车品牌管理_Siobhan. 明鑫的博客-CSDN博客

     

     删除完的结构如下图:

    接下来我们来演示vue的生命周期:

    1、验证beforeCreate

    main.js:

     index.html:

     此时,我们启动项目:npm run dev

    发生如下报错:

    修改vue.config.js  

     启动成功后可以看到:

     说明:Vue实例创建前,此时data 和 methods 中的 数据都还没有没初始化

     2、验证created

    1. created() {
    2. // vue实例创建完成了,此时的data和methods都已经准备好了
    3. console.log(this.msg);
    4. this.show()
    5. },

     3、验证beforeMount

    1. beforeMount() {
    2. // vue实例绑定的html模板已经在内存中了,但还没有挂载到界面上
    3. console.log(document.getElementById("h3").innerText);
    4. },

     说明:html模板已准备内存中,但未渲染到页面,此时无法进行dom操作

      4、验证mounted

    1. mounted() {
    2. //vue实例绑定的html模板已经挂载到界面上
    3. console.log(document.getElementById("h3").innerText);
    4. },

      说明:html模板已挂载到了页面中,此时可以进行 dom操作

      5、验证beforeUpdate和updated

    这里我们比较验证,更为直观,因为当我们data数据发生改变时,都会触发相应的改变

    1. // 当data数据发生改变 beforeUpdate/updated
    2. beforeUpdate() {
    3. // data 已经改变成了最新的数据,但页面的数据还没有同步
    4. console.log("data中的msg数据是:" + this.msg)
    5. console.log("界面上元素的内容:" + document.getElementById("h3").innerText)
    6. },
    7. updated() {
    8. // 页面的数据和data的数据都是最新的,已经保持同步了
    9. console.log("data中的msg数据是:" + this.msg)
    10. console.log("界面上元素的内容:" + document.getElementById("h3").innerText)
    11. },

    说明:beforeUpdate:当data数据改变的时候执行的钩子函数, 此时,页面中的显示的数据,还是旧的,此时 data 数据是最新的,页面尚未和最新的数据保持同步

    updated:updated 事件执行的时候,页面和 data 数据已经保持同步了,都是最新的。

      6、验证beforeUpdate和updated

     

    1. beforeDestory() {
    2. console.log("vue实例被销毁前");
    3. console.log(this.msg);
    4. this.show();
    5. },
    6. destoryed() {
    7. // 此时vue实例已经被销毁了,vue实例上的data和methods等已经不可用了
    8. console.log("vue实例被销毁后");
    9. console.log(this.msg);
    10. this.show();
    11. }

    我们在这里不能采用这种方法验证销毁,于是我们清空控制台,然后在vscode中【ctrl+c】停止项目来看:

     我们发现也是来不及打印的,于是在官网中,通过理解生命周期图,最终找的方法如下:

     

     

     说明:beforeDestory: vm实例被销毁前,此时data和methods等还可用

    destoryed:vm实例已销毁, data和methods等所有属性都已经不可用。


     案例原代码:

    vue的生命周期钩子函数详解源代码-Node.js文档类资源-CSDN下载

  • 相关阅读:
    Linux驱动开发+QT应用编程实现IIC读取ap3216c
    从零开始操作系统-09:键盘实现
    【MindSpore易点通机器人-04】MLOps 环境搭建过程
    SpringCloud全系列知识(4)——统一网关Gateway
    VS2017离线安装记录
    POI导出excel文件之取消合并单元格、删除列、移动列
    【22-23春】AI作业10-经典卷积网络
    windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流
    idea正常run,但是debug报错
    #文件--C++
  • 原文地址:https://blog.csdn.net/weixin_46474921/article/details/126742733
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号