程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • Vue

    • Vue基础
    • Vue前置知识
    • webpack
    • Vue基本使用
    • Vue基本使用+
    • Vue组件
    • Vue生命周期
      • Vue生命周期
      • 钩子函数
        • 初始化阶段
        • 挂载阶段
        • 更新阶段
        • 销毁阶段
      • axios
        • 基本使用
        • 获取图书
        • 添加图书
        • 配置全局配置
      • ref属性
    • Vue生命周期+
    • Vue插槽
    • Vue组件库
    • 网易云音乐案例
    • 案例
    • Vuex
    • Vue3.0
    • vue动画
    • 项目常用

    • 问题记录

    • vue模板
  • Nuxt

  • Echarts

  • Node

  • git

  • express

  • 微信小程序

  • Spring

  • 后端知识

  • Markdown

  • project

  • 自用文档查询

  • 框架和软件
  • Vue
yuadh
2022-02-27
目录

Vue生命周期

# Vue生命周期

vue的从创建到销毁的过程

# 钩子函数

Vue内置函数,随着组件的生命周期阶段,自动执行

作用: 特定的时间点,执行特定的操作

场景: 组件传创建完毕后,可以在 created 生命周期函数中发起 ajax 请求,从而初始化data 数据

分类: 4大阶段8大方法

阶段 方法 方法
初始化 beforeCreate created
挂载 beforeMount mounted
更新 beforeUpdate updated
销毁 beforeDestroy destroyed

# 初始化阶段

new Vue() 以后,vue内部给实例对象添加了一些基本的属性和方法,data和methods 初始化之前

beforeCreate(){
	consolo.log("beforeCreate--执行")
	consolo.log(this.msg)//undefined 拿不到data里的数据
}
1
2
3
4

data和methods 初始化之后

场景:网络请求,注册全局事件

created(){
	consolo.log("created--执行")
	consolo.log(this.msg)//hello world 可以拿到data里的数据
}
1
2
3
4

Vue实例从创建到编译模板执行的两个函数

注意: created可以获取到data,不能获取真实DOM

# 挂载阶段

真实DOM挂载之前 beforeMount()

场景: 预处理 data,不会触发 updated 钩子函数

beforeMount(){
	console.log("beforeMount -- 执行")
	consolo.log(document.getElementById("docid"))//null
	this.msg = "Hello Vue"//获取不到真实DOM,但是可以对data重新赋值预处理需要挂载到真实DOM的值
}
1
2
3
4
5

真实DOM 挂载之后 Mounted()

场景: 可以获取到挂载后的真实DOM

mounted(){
	console.log("mounted -- 执行")
	console.log(document.getElementById("docid"))//<p></p>
}
1
2
3
4

# 更新阶段

前提:data数据改变才执行

beforeUpdate(){
	consolo.log("beforeUpdate -- 执行")
	consolo.log(document.querySelectorAll("#UL>li")[4])//undefined
}
1
2
3
4

获取不到真实DOM,对data值的更新

更新之后 updated()

update(){
	consolo.log("update -- 执行")
	consolo.log(document.querySelectorAll("#UL>li")[4])//<li></li>
}
1
2
3
4

可以获取更新后的真实DOM

# 销毁阶段

前提:v-if=“false 删除DOM树

场景: 移除全局事件,移除当前组件,计时器,定时器,eventBus移除事件 $off 方法

beforeDestroy(){
	console.log('beforeDestroy -- 执行')
	clearInterval(this.timer)
}
destroyed(){
	console.log('destroyed -- 执行')
}
1
2
3
4
5
6
7

# axios

axios 是一个专门用于发送 ajax 请求的库

  • 支持客户端发送 Ajax 请求
  • 支持服务端 Node.js 发送请求
  • 支持 Promise 相关用法
  • 支持请求和响应的拦截功能
  • 自动转换 ajax
axios({
	method:'请求方式',
	url:'请求地址',
	data:[//post,向服务器提交数据
		xxx:xxx
	],
	params:[//get,获取服务端资源
		xxx:xxx
	]
}).then(res=>{
    console.log(res.data)
}).catch(res=>{
    console.log(err)
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 基本使用

<script>
	import axios from 'axios'
    export default {
        methods:{
            getAllFn(){
                //发起axios请求
                axios({
                    url:"URL",
                    method:"GET",
                }).then(res=>{
                    console.log(res);
                })
            }
        }
    }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 获取图书

<script>
	import axios from 'axios'
    export default {
        methods:{
            getAllFn(){
                //发起axios请求
                axios({
                    url:"URL",
                    method:"GET",
                    params:{
                        bookname:this.bName//获取指定书名
                    }
                }).then(res=>{
                    console.log(res);
                })
            }
        }
    }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 添加图书

<script>
	import axios from 'axios'
    export default {
        methods:{
            getAllFn(){
                //发起axios请求
                axios({
                    url:"URL",
                    method:"POST",
                    data:{
                        appkey:"hash",
                        ...this.bookObj,//剩余赋值,定义的名称和API文档需要一直才能赋值成功
                    }
                }).then(res=>{
                    console.log(res);
                })
            }
        }
    }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 配置全局配置

import axios from 'axios'
axios.default.baseURL = 'http://localhost:8080/' //注意拼接的URL地址
1
2

# ref属性

ref属性可以获取到真实DOM,在vue的挂载周期

语法: ref、this.$refs.XXX

代码

<template>
	<div>
        <h1 id="h" ref="refH">test</h1>
    </div>
</template>
<script>
	mounted(){
        //获取真实DOM的两种方式 
        console.log(document.getElementById("h"));
        console.log(this.$refs.refH);
    }
</script>
1
2
3
4
5
6
7
8
9
10
11
12

可以获取到组件对象

<template>
	<div>
        <Demo ref="h"></Demo>
    </div>
</template>
<script>
	import Demo  from './Demo'
    export default{
        mounted(){
            let demoObj = this.$refs.h
            demoObj.fn();//执行组件对应函数
        }
    }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48
Vue组件
Vue生命周期+

← Vue组件 Vue生命周期+→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×