Vue生命周期和beforeRouteEnter()/beforeRouteLeave()函数

找到Vue.js 的官网,简直都是自己陌生的各种语法函数,(下面总结了一下常用的)

先参考vue官网从简单的看起!先了解下vue的生命周期。
在这里插入图片描述
2、也许我们从上图中并不能直观的看出生命周期中的函数的具体使命,先简短的用文字了解下:

beforeCreate():实例在内存中被创建出来,还没有初始化好data和methods属性。

create():实例已经在内存中创建,已经初始化好data和method,此时还没有开始编译模板。

beforeMount():已经完成了模板的编译,还没有挂载到页面中。

mounted():将编译好的模板挂载到页面指定的容器中显示。

beforeUpdate():状态更新之前执行函数,此时data中的状态值是最新的,但是界面上显示的数据还是旧的,因为还没有开始重新渲染DOM节点。

updated():此时data中的状态值和界面上显示的数据都已经完成了跟新,界面已经被重新渲染好了!

beforeDestroy():实例被销毁之前。

destroyed():实例销毁后调用,Vue实例指示的所有东西都会解绑,所有的事件监听器都会被移除,所有的子实例也都会被销毁。组件已经被完全销毁,此时组建中所有data、methods、以及过滤器,指令等,都已经不可用了。

这些都是官方说明,在实际开发项目中这些钩子函数如何使用呢?

beforecreate : 可以在这函数中初始化加载动画
created :做一些数据初始化,实现函数自执行
mounted: 调用后台接口进行网络请求,拿回数据,配合路由钩子做一些事情
destoryed :当前组件已被删除,清空相关内容

3、beforeRouteEnter(to, from, next):进入路由之前执行的函数,写在组件里可根据路由进行页面判断或传值。
在这里插入图片描述
4、beforeRouteLeave(to, from, next):离开路由之前执行的函数,可用于页面的反向传值,页面跳转。
在这里插入图片描述

Vue 中,**钩子函数(Hook Functions)** 是指框架提供的一系列回调机制,允许开发者在特定的执行点插入自定义逻辑。除了组件生命周期相关的钩子函数外,Vue 还提供了其他类型的钩子函数,主要分布在路由(Vue Router)、状态管理(Vuex)、以及指令系统中。 --- ### 三、Vue 中除生命周期之外的钩子函数分类 #### 1. 路由钩子函数Vue Router) Vue Router 提供了多种导航钩子函数,用于控制路由切换过程中的行为,包括全局钩子、单个路由独有钩子组件内钩子: - **全局前置守卫 `beforeEach`**:在每次路由切换前触发,可用于权限验证或页面加载提示。 - **全局后置钩子 `afterEach`**:在路由切换完成后触发,常用于记录访问日志或页面统计。 - **路由独有钩子 `beforeEnter`**:定义在某个具体路由配置中,在进入该路由时触发。 - **组件内钩子 `beforeRouteEnter`、`beforeRouteUpdate`、`beforeRouteLeave`**:这些钩子定义在组件内部,分别在进入路由、更新参数、离开路由时调用。 ```javascript const router = new VueRouter({ routes: [ { path: '/dashboard', component: Dashboard, beforeEnter: (to, from, next) => { // 自定义逻辑判断是否允许进入 if (userIsAuthenticated()) { next(); } else { next('/login'); } } } ] }); ``` 这些钩子函数使得路由跳转具备更强的控制能力,适用于权限控制、页面缓存、数据预加载等场景[^4]。 --- #### 2. Vuex 状态管理钩子 Vuex 本身没有显式的“钩子函数”概念,但通过其模块化结构与响应式机制,可以实现类似钩子的行为: - **`subscribe` 方法**:用于监听 store 的 mutation 变化,适合进行调试、日志记录等操作。 - **`subscribeAction` 方法**:用于监听 action 的触发,支持异步操作监控。 - **模块的 `onInit` 钩子**:在模块被注册时执行初始化逻辑。 ```javascript store.subscribe((mutation, state) => { console.log('Mutation type:', mutation.type); console.log('Current state:', state); }); ``` 这些机制为状态变更提供了可观测性扩展性,是构建复杂应用状态流的关键工具[^3]。 --- #### 3. 指令钩子函数(Directives) Vue 允许通过自定义指令来扩展 DOM 行为,每个指令可以定义多个钩子函数,分别在不同的阶段执行: - `created`:在绑定元素的父组件创建时调用。 - `beforeMount`:在元素挂载前调用。 - `mounted`:在元素挂载后调用。 - `beforeUpdate`:在组件更新前调用。 - `updated`:在组件更新后调用。 - `beforeUnmount`:在组件卸载前调用。 - `unmounted`:在组件卸载后调用。 ```javascript app.directive('focus', { mounted(el) { el.focus(); } }); ``` 这些钩子函数非常适合处理需要直接操作 DOM 的场景,例如自动聚焦、滚动行为、动画控制等[^5]。 --- #### 4. 插件系统的钩子 Vue 插件通常通过 `install` 方法注入功能,虽然不是严格意义上的钩子函数,但在插件初始化过程中也起到了类似作用。插件可以通过混入(mixin)或原型扩展等方式影响整个应用的行为。 ```javascript MyPlugin.install = function (app, options) { app.config.globalProperties.$myMethod = function () { // 添加全局方法 }; }; ``` 这类机制广泛用于第三方库集成、全局状态共享、工具封装等场景[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值