IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue3 生命周期 -> 正文阅读

[JavaScript知识库]Vue3 生命周期

复制 => 运行 => 查看结果

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>vue生命周期学习</title>
  <script src="https://unpkg.com/vue@3"></script>
</head>

<body>
  <div id="app">
    <h1>{{message}}</h1>
  </div>
</body>
<script>
  const { createApp } = Vue
  var app = createApp({
    data() {
      return {
        message: 'Vue的生命周期'
      }
    },
    beforeCreate: function () {
      console.group('------beforeCreate创建前状态------');
      console.log("%c%s", "color:red", "el     : " + this.$el); //undefined
      console.log("%c%s", "color:red", "data   : " + JSON.stringify(this.$data));
      console.log("%c%s", "color:red", "message: " + this.message)
    },
    created: function () {
      console.group('------created创建完毕状态------');
      console.log("%c%s", "color:red", "el     : " + this.$el);
      console.log("%c%s", "color:red", "data   : " + JSON.stringify(this.$data));
      console.log("%c%s", "color:red", "message: " + this.message); 
    },
    beforeMount: function () {
      console.group('------beforeMount挂载前状态------');
      console.log("%c%s", "color:red", "el     : " + (this.$el));
      console.log('el 为', this.$el);
    },
    mounted: function () {
      console.group('------mounted 挂载结束状态------');
      console.log("%c%s", "color:red", "el     : " + this.$el); 
      console.log('el 为', this.$el);
    },
  })
  app.mount('#app')
</script>

</html>

在这里插入图片描述

%c 给输出指定颜色, 比如

var str = "%c hello %c world";
var arg1 = "color: #fadfa3; background: #030307; padding:5px 0;";
var arg2 = "background: pink; padding:5px 0;";
console.log(str, arg1, arg2)

applyOptions 中执行 beforeCreate, created

beforeCreate

if (options.beforeCreate) {
  callHook(options.beforeCreate, instance, LifecycleHooks.BEFORE_CREATE)
}

中间执行函数: 给 vue instance 挂载 options , 使其有 data 之类的

created 此时 instance 中挂载了 data 等 options

if (created) {
  callHook(created, instance, LifecycleHooks.CREATED)
}

componentUpdateFn 中执行 beforeMount, mounted

beforeMount

if (bm) {
  invokeArrayFns(bm)
}

中间执行: patch(null, sunTree) => processElement => el = vnode.el = hostCreateElement(vnode.type) 给 vnode 添加 el

mounted 此时 $el 上已存在值了

if (m) {
  queuePostRenderEffect(m, parentSuspense)
}

更新函数逻辑

const componentUpdateFn = () => {
	if (!instance.isMounted) {
		if (bm) {
		  invokeArrayFns(bm)
		}
		patch(null, sunTree)
		if (m) {
		  queuePostRenderEffect(m, parentSuspense)
		}
	} else {
	   if (bu) {
	     invokeArrayFns(bu)
	   }
	   patch(prevTree, nextTree)
	   if (u) {
	     queuePostRenderEffect(u, parentSuspense)
	   }
	}
}

参考
https://segmentfault.com/a/1190000011381906

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:06:53  更:2022-02-03 01:08:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:40:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码