当前位置: 首页 > wzjs >正文

建设部资质查询网站精品建站公司

建设部资质查询网站,精品建站公司,程序开发外包,系统门户网站建设详细功能文章目录 前言🔄 Vue2 生命周期流程(8个核心钩子)📝 代码中典型用法示例一、您的描述验证二、完整生命周期代码示例三、关键阶段行为说明🔍 常见问题 前言 提示:以下是本篇文章正文内容,下面案…

文章目录

  • 前言
  • 🔄 Vue2 生命周期流程(8个核心钩子)
  • 📝 代码中典型用法示例
  • 一、您的描述验证
  • 二、完整生命周期代码示例
  • 三、关键阶段行为说明
  • 🔍 常见问题


前言

提示:以下是本篇文章正文内容,下面案例可供参考

Vue2 生命周期钩子函数的正确名称、顺序及核心作用


🔄 Vue2 生命周期流程(8个核心钩子)

阶段钩子函数正确拼写触发时机
创建阶段1. 创建前beforeCreate实例初始化后,数据观测/事件配置前(无法访问 datamethods
2. 创建后created实例创建完成,可访问数据/方法(未挂载DOM,适合API请求)
挂载阶段3. 挂载前beforeMount模板编译完成,DOM未挂载到页面(无法操作真实DOM)
4. 挂载后mountedDOM已挂载,可操作真实DOM元素(适合初始化第三方库)
更新阶段5. 更新前beforeUpdate数据变化后,DOM重新渲染前(可获取更新前的DOM状态)
6. 更新后updatedDOM重新渲染完成(避免在此处修改数据,可能导致循环更新)
销毁阶段7. 销毁前beforeDestroy实例销毁前触发(必须在此清理定时器、解绑全局事件)
8. 销毁后destroyed实例完全销毁,所有绑定被移除(子组件也被销毁)

📝 代码中典型用法示例

export default {data() {return { count: 0 }},beforeCreate() {console.log('1. 数据未初始化:', this.count) // undefined},created() {console.log('2. 数据已初始化:', this.count) // 0this.fetchData() // 发起异步请求},mounted() {console.log('4. DOM已就绪:', document.getElementById('app'))this.initChart() // 初始化Echarts等DOM库},beforeDestroy() {clearInterval(this.timer) // 清理定时器window.removeEventListener('resize', this.handleResize) // 解绑事件}
}

一、您的描述验证

beforeCreate 阶段不能访问 data/methods,此时实例未初始化数据观测
created 是最早能访问数据的阶段,适合异步请求、非 DOM 操作
beforeMount 阶段无法操作 DOM,模板已编译但未挂载到页面
beforeDestroy 可最后一次操作数据,必须在此清理全局资源(定时器、事件监听)
destroyed 后实例效果残留但不可维护,Vue 会解除数据绑定和事件监听,但不会删除 DOM 节点

  • 销毁阶段beforeDestroy(销毁前)→ destroyed(销毁后)
  • 更新阶段:仅当数据变化且影响DOM时触发(无数据变化不会执行)

二、完整生命周期代码示例

<!DOCTYPE html>
<html>
<head><title>Vue2 生命周期详解</title><script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
</head>
<body><div id="app"><h1>{{ message }}</h1><button @click="updateMessage">更新数据</button><button @click="destroyInstance">销毁实例</button></div><script>new Vue({el: '#app',data() {return {message: 'Hello Vue!',timer: null,domElement: null}},// ------------------------- 创建阶段 -------------------------beforeCreate() {console.log('1. beforeCreate —— 实例初始化,但数据未观测:');console.log('   - data:', this.$data);          // undefinedconsole.log('   - message:', this.message);     // undefinedconsole.log('   - method:', typeof this.updateMessage); // undefined},created() {console.log('\n2. created —— 实例创建完成,可访问数据和方法:');console.log('   - message:', this.message);      // "Hello Vue!"console.log('   - 调用方法:', this.updateMessage); // function// 典型场景:发起异步请求this.fetchData();// 设置定时器(需在销毁前清理)this.timer = setInterval(() => {console.log('定时器运行中...');}, 1000);},// ------------------------- 挂载阶段 -------------------------beforeMount() {console.log('\n3. beforeMount —— 模板编译完成,但未挂载到DOM:');console.log('   - h1元素:', document.querySelector('h1')); // null},mounted() {console.log('\n4. mounted —— DOM已挂载,可操作真实DOM:');this.domElement = document.querySelector('h1');console.log('   - h1内容:', this.domElement.innerHTML); // "Hello Vue!"// 典型场景:初始化第三方库(如ECharts)this.initThirdPartyLibrary();},// ------------------------- 更新阶段 -------------------------beforeUpdate() {console.log('\n5. beforeUpdate —— 数据已变,DOM未更新:');console.log('   - 新数据:', this.message);console.log('   - DOM内容:', this.domElement.innerHTML); // 旧值},updated() {console.log('\n6. updated —— DOM已更新:');console.log('   - DOM内容:', this.domElement.innerHTML); // 新值},// ------------------------- 销毁阶段 -------------------------beforeDestroy() {console.log('\n7. beforeDestroy —— 实例销毁前,仍可操作数据:');console.log('   - message:', this.message); // 最新值// 必须清理资源!clearInterval(this.timer);console.log('已清理定时器');},destroyed() {console.log('\n8. destroyed —— 实例已销毁:');// 以下操作不会生效!this.message = '试图修改已销毁实例的数据';console.log('   - 数据修改无效:', this.message);},methods: {updateMessage() {this.message = 'Updated at: ' + new Date().toLocaleTimeString();},destroyInstance() {this.$destroy();},fetchData() {// 模拟API请求setTimeout(() => {this.message = 'Data loaded!';}, 1500);},initThirdPartyLibrary() {// 假设初始化图表console.log('初始化第三方库完成');}}});</script>
</body>
</html>

在这里插入图片描述在这里插入图片描述

三、关键阶段行为说明

  1. beforeCreatecreated

    • 数据观测建立:从无法访问数据 → 可自由操作数据方法
    • 异步请求时机:在 created 发起可更快获取数据(相比 mounted 提前约一个生命周期)
  2. beforeMountmounted

    • DOM 操作分水岭mounted 是操作真实 DOM 的最早时机
    • 第三方库初始化:如 ECharts、地图库等依赖 DOM 的初始化操作
  3. beforeUpdateupdated

    • 避免修改数据:在钩子内修改数据可能导致无限循环更新
    • 获取 DOM 状态beforeUpdate 获取更新前 DOM,updated 获取更新后 DOM
  4. beforeDestroydestroyed

    • 资源清理责任:Vue 不会自动清理全局资源(如定时器、事件监听)
    • DOM 残留现象:Vue 只解除绑定,不删除 DOM 节点(页面效果可能保留但无响应)

🔍 常见问题

  1. 为什么在 created 发起请求,不在 mounted

    • created 阶段更早,可更快获取数据(DOM无关操作尽量提前)
  2. beforeDestroy 不清理定时器会怎样?

    • 定时器持续运行,导致内存泄漏(即使组件销毁了,JS代码依然在后台执行)

文章转载自:

http://APjsEkfX.yfnjk.cn
http://TpSQ1nHj.yfnjk.cn
http://6kiPBW26.yfnjk.cn
http://wa7oH2nQ.yfnjk.cn
http://0KIQgKXq.yfnjk.cn
http://mL5nbZyD.yfnjk.cn
http://CCF96x5G.yfnjk.cn
http://yKMyjL0m.yfnjk.cn
http://CxUvHfEV.yfnjk.cn
http://JsWJTW1s.yfnjk.cn
http://Vyd20ssv.yfnjk.cn
http://TNnbu3iq.yfnjk.cn
http://Lu0r0DMb.yfnjk.cn
http://weHuoJuM.yfnjk.cn
http://bAH1aPaE.yfnjk.cn
http://cIJ15eg5.yfnjk.cn
http://YkkhpvYX.yfnjk.cn
http://oTyOcMsY.yfnjk.cn
http://ZLlZIGWf.yfnjk.cn
http://nySo3ga4.yfnjk.cn
http://4vK0aiNm.yfnjk.cn
http://3AwQGzhg.yfnjk.cn
http://ZWMl5PgI.yfnjk.cn
http://IACLyX4D.yfnjk.cn
http://VTXomNOL.yfnjk.cn
http://BTA1fejE.yfnjk.cn
http://WiKwaDOV.yfnjk.cn
http://PD50DBaV.yfnjk.cn
http://wOP3sljL.yfnjk.cn
http://hKXLWzO5.yfnjk.cn
http://www.dtcms.com/wzjs/765528.html

相关文章:

  • 玉泉路做网站阜南县城乡建设局官方网站
  • 关于机场建设的网站网站开发不懂英语
  • 山西网站建设服务同样是div 怎么有些网站收录少 有些多
  • 网站建设培训费用多少车辆年检查询系统官方网站
  • 个人网站赚广告费快速网站建设公司哪家好
  • 服装店网站建设规划书海南企业网站建设
  • wordpress随机文章列表长春seo建站
  • 手机网站怎么在电脑上打开wordpress配置教程
  • 免费做金融网站有哪些工程项目管理软件有哪些
  • 个人怎么做旅游网站wordpress文章格式
  • 有什么网站可以发布个人信息织梦企业网站
  • 梁山手机网站建设江西省住房和城乡建设厅网站
  • 二手手机网站网页设计会展免费网站模板
  • 杭州旅游景区网站建设网页优化方法
  • 怎么维护网站wordpress 个人博客模板
  • 采集网站如何收录网站有什么类型
  • 免费做宣传的网站是网站建设中最重要的环节是
  • 建立自己的网站平台网站做的好不好数据
  • 2017还有人做网站吗优秀企业网站有哪些
  • 中国住房城乡和城乡建设部网站网站建设难做吗
  • 名师工作室网站建设建议天眼网查询个人信息
  • 湛江网站制作系统百度电脑版下载官网
  • 哪个网站做任务能赚钱页游最火的游戏
  • 赶集的网站怎么做移动互联网综合实训实践报告
  • wordpress文章大网站网站备案局
  • 网站建设背景论文东莞贸易公司寮步网站建设价格
  • 怎么做点击文字进入的网站怎么做代刷网站长
  • 网站编辑没有经验可以做吗网站开发公司广州
  • 个人做网站需要注意什么网站开发有前途
  • 免费网站建站 网页国内有奖活动第一分享平台