码农知识堂 - 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下载

  • 相关阅读:
    酷睿i9-13900K性能出炉Steam游戏开发首选驰网独家i9-13900K服务器水冷定制高主频游戏服务器
    探索大恒图像|MER2-301-125U3C在制造行业玻璃瓶质量检测的应用
    [MySQL]DQL,Data Query Language(数据查询语言)
    腾讯云年终选购云服务器攻略!
    16、IOC 之 BeanFactory 接口
    【owt】 Intel® Media SDK for Windows: MSDK2021R1
    HTML导航栏二级菜单(垂直、水平方向)
    docker及docker-compose的离线安装与镜像及容器的导入、导出操作总结
    Webpack/Babel/⼯程化 笔试题精讲1
    什么人不适合当项目经理?
  • 原文地址:https://blog.csdn.net/weixin_46474921/article/details/126742733
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号