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知识库 -> Vue生命周期 -> 正文阅读

[JavaScript知识库]Vue生命周期

引出生命周期

实现一个透明度来回变化的效果。

实现方式一:通过外部的定时器实现

缺点:代码有点割裂,代码尽量写在Vue实例里面,全局配置可以写在外面。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>引出生命周期</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2 :style="{opacity}">欢迎学习Vue</h2>
        <!-- <button @click="fang">点我变化透明度</button> -->
    </div>
</body>
<script>
    Vue.config.productionTip = false
    const vm = new Vue({
        el:'#root',
        data:{
            opacity:1,
        },
    })
    // 通过外部的定时器实现
    setInterval(()=>{
        vm.opacity -= 0.01
        if(vm.opacity <= 0) vm.opacity=1
    },16)
</script>
</html>

实现方式二:methods

methods中使用事件回调不可取,不符合需求。
此时,data中数据变化,重新解析模板,每个重新解析,又会再次调用开启定时器,如此一来,会极大消耗资源,并且屏幕出现鬼畜效果。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>引出生命周期</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2 :style="{opacity}">欢迎学习Vue</h2>
        {{change()}}
    </div>
</body>
<script>
    Vue.config.productionTip = false
    const vm = new Vue({
        el:'#root',
        data:{
            opacity:1,
        },
        methods:{
            change(){
                setInterval(()=>{
                    console.log("change")
                    this.opacity -= 0.01
                    if(this.opacity <= 0) vm.opacity=1
                },16)
            }
        }
    })
</script>
</html>

实现方式三:生命周期mounted

Vue完成模板的解析并把初始的真实DOM元素放入雅页面后(挂在完毕)调用 mounted,只调用了一次,开启了一个定时器。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>引出生命周期</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2 :style="{opacity}">欢迎学习Vue</h2>
    </div>
</body>
<script>
    Vue.config.productionTip = false
    const vm = new Vue({
        el:'#root',
        data:{
            opacity:1,
        },
        // Vue完成模板的解析并把初始的真实DOM元素放入雅页面后(挂在完毕)调用 mounted
        mounted(){
            console.log("mounted")
            setInterval(()=>{
                this.opacity -= 0.01
                if(this.opacity <= 0) vm.opacity=1
            },16)
        },
    })
</script>

</html>

总结:

生命周期:

  1. 又名:生命周期回调函数、生命周期函数、生命周期钩子。
  2. 是什么:Vue在关键时刻帮我们调用的一些特殊名称的函数。
  3. 生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的。
  4. 生命周期函数中的this执行是vm 或 组件实例对象。

在这里插入图片描述

分析生命周期

vm销毁后 原生回调好使

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分析生命周期</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
       <h2>当前的n值是{{n}}</h2>
       <button @click="add">点我n+1</button>
       <button @click="bye">点我销毁vm</button>
    </div>
</body>
<script>
    Vue.config.productionTip = false
    const vm = new Vue({
        el:'#root',
        // // template全部替换el指向元素,的有一个根元素
        // template:`
        // <div>
        //     <h2>当前的n值是{{n}}</h2>
        //     <button @click="add">点我n+1</button>
        // </div>
        // `,
        data:{
            n:1
        },
        methods:{
            add(){
                this.n++
            },
            bye(){ // vm销毁后 原生回调好使
                console.log("bye")
                this.$destroy()
            }
        },
        beforeCreate() {
            // 此时vue中没有数据,还没绑定,vm实例中没有_data和n
            console.log("beforeCreate")
            // console.log(this)  // Vue
            // debugger
        },
        created() {
            // 此时vue实例上有了_data和n及其getset
            console.log("created")
            // console.log(this)
            // debugger
        },
        beforeMount() {
            // 这里边操作DOM无效
            console.log("beforeMount")
            // console.log(this)
            // // debugger
            // document.querySelector('h2').innerText = '哈哈'
        },
        mounted() {
            console.log("mounted")
            // console.log(this)
            // // 对DOM操作有效
            // document.querySelector('h2').innerText = '哈哈'
            // debugger
        },
        beforeUpdate() { //页面和数据未同步
            console.log("beforeUpdate")
            // console.log(this.n)
            // debugger
        },
        updated() { //页面和数据同步
            console.log("updated")
            // console.log(this.n)
            // debugger
        },
        beforeDestroy() { // 到了这个阶段 设计数据更新不会再起到效果
            console.log("beforeDestroy")
        },
        destroyed() {
            console.log("destroyed")
        },
    })
</script>
</html>

beforeUpdate//页面和数据未同步

在这里插入图片描述

updated//页面和数据同步

在这里插入图片描述

总结生命周期

vm的一生(vm的生命周期):

  1. 将要创建 ===> 调用beforeCreate函数。
  2. 创建完毕 ===> 调用created函数。
  3. 将要挂载 ===> 调用beforeMount函数。
  4. (重要)挂载完毕 ===> 调用mounted函数。 ======> 【重要的钩子】
  5. 将要更新 ===> 调用beforeUpdate函数。
  6. 更新完毕 ===> 调用updated函数。
  7. (重要)将要销毁 ===> 调用beforeDestory函数。 ======> 【重要的钩子】
  8. 销毁完毕 ===> 调用destoryed函数。

常用的生命周期钩子及常用功能

  1. mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】
  2. beforeDestroy: 清楚定时器、解绑自定义事件、取消订阅消息等【收尾工作】
    关于销毁Vue实例
  3. 销毁后借助Vue开发者工具看不到任何信息
  4. 销毁后自定义事件会失效,但原生DOM事件依然有效
    ory函数。 ======> 【重要的钩子】
  5. 销毁完毕 ===> 调用destoryed函数。

常用的生命周期钩子及常用功能

  1. mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】
  2. beforeDestroy: 清楚定时器、解绑自定义事件、取消订阅消息等【收尾工作】
    关于销毁Vue实例
  3. 销毁后借助Vue开发者工具看不到任何信息
  4. 销毁后自定义事件会失效,但原生DOM事件依然有效
  5. 一般不会再beforeDestroy操作数据,因为即便操作数据,也不会再触发更新流程了
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:34:49  更:2022-08-06 10:37:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 12:32:33-

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