Vue - 5 生命周期与组件
Vue - 5 生命周期与组件
1.Vue的生命周期钩子函数
钩子函数 | 描述 |
---|---|
beforeCreate | 创建Vue实例之前调用 |
created | 创建Vue实例成功后调用(可以在此处发送异步请求后端数据) |
beforeMount | 渲染DOM之前调用 |
mounted | 渲染DOM之后调用 |
beforeUpdate | 重新渲染之前调用(数据更新等操作时,控制DOM重新渲染) |
updated | 重新渲染完成之后调用 |
beforeDestroy | 销毁之前调用 |
destroyed | 销毁之后调用 |
Vue.js的生命周期钩子函数,是Vue实例创建、挂载、更新和销毁过程中自动调用的函数,这些函数让你可以控制和执行一些自定义的代码。Vue 的生命周期钩子函数主要分为以下四个阶段:
(1)创建阶段:
- beforeCreate:实例刚在内存中被创建出来,此时还没有初始化好 data 和 methods 属性。
- created:实例已经在内存中创建好,data 和 methods 已经被初始化好了,此时还没有开始编译模板。
(2)挂载阶段:
- beforeMount:此时模板已经编译完成,但还没有挂载到页面中。
- mounted:此时实例已经挂载到页面上,页面中的元素已经可以使用了。
(3)更新阶段
- beforeUpdate:数据更新时触发,但是页面还没有被重新渲染。
- updated:数据更新完成,页面已经重新渲染。
(4)销毁阶段:
- beforeDestroy:实例销毁之前调用,此时实例仍然完全可用。
- destroyed:实例销毁之后调用,此时实例已经无法使用。
1.Created用的较多,可以发送ajax请求
2.beforeDestroy 可以通过以下方法来实现
- 组件一创建,created中启动一个定时器
- 组件被销毁,beforeDestroy销毁定时器
3.由于http协议的特性,服务端无法主动发送消息给客户端,所以基于http协议的实时聊天器,就是通过轮询:定时器 + ajax来实现的
4.websocket协议:服务端主动推送消息,参考以下
2.Vue组件
在 Vue.js 中,组件是一种可复用的 Vue 实例,可以定义自己的模板、样式和逻辑,并且可以被其他 Vue 实例复用。使用组件可以将复杂的页面分解为多个独立的小组件,从而使代码更加简洁、可维护、可复用。
组件可以通过 Vue.component() 方法进行注册,也可以使用 .vue 文件进行定义。在注册组件时,需要指定组件的名称和组件选项。组件选项包括组件的数据、模板、方法、生命周期钩子函数等。定义好组件之后,就可以在其它 Vue 实例中使用该组件了。
Vue.component('my-component', { data: function () { return { message: 'Hello Vue!' } }, template: '<div>{{ message }}</div>' })
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- vue 文件 --> <script src="./js/vue.js"></script> </head> <body> <div class="app"> <my-component> </my-component> </div> </body> <script> // 定义全局组件 Vue.component('my-component', { // data需要以方法的形式出现,data中的数据可以重复使用 data() { return { name: 'duoduo', show: false, } }, // 在全局中设计局部组件 template: ` <div> <button @click="handleShow">展示名字</button> <sections></sections> <div v-if="show">名字{{ name }}</div> </div>`, methods: { handleShow() { this.show = !this.show } }, // 局部组件 components: { sections: { template: ` <div> <div>年龄{{ age }}</div> </div> `, data() { return { age: 19 } }, }, }}) let vm = new Vue({ el: '.app', data: {}, methods: {}, }) </script> </html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY