Vue created()和 activated()区别和作用调用顺序

目录

作用

区别

举个例子

调用顺序


作用

        简单说都是用于页面初始化,土话说一进来页面,去进行数据加载或调用方法的

区别

首先activated 钩子只适用于被 <keep-alive> 包裹的组件。对于不被 <keep-alive> 包裹的组件,activated 钩子不会被调用。你可能会说我的activated ()所在方法页面没看见 <keep-alive>,那这个可能放在你父类的页面中你可以看看,比如App.vue、main.vue等。

比如如我的下图

举个例子

ComponentAComponentBComponentA 是一个普通组件,而 ComponentB 是被 <keep-alive> 包裹的组件。我们将观察这两个组件如何响应 createdactivated 钩子。

  1. ComponentA(普通组件):

    • 当你首次访问 ComponentA 时,它的 created 钩子会被调用。这是初始化数据或进行 API 调用的好时机。
    • 如果你离开 ComponentA(比如切换到另一个组件)然后再回来,ComponentA 将被重新创建,created 钩子再次被调用。
  2. ComponentB(被 <keep-alive> 包裹的组件):

    • 当你首次访问 ComponentB 时,它的 createdactivated 钩子都会被调用。
    • 然后,如果你离开 ComponentB,它不会被销毁,而是保持在内存中。
    • 当你再次访问 ComponentB 时,由于组件已经被创建,created 钩子不会被再次调用。但是,activated 钩子会被调用,因为这个组件是从 <keep-alive> 缓存中被重新激活的。

<component-a v-if="isComponentAVisible"></component-a>
<!-- 在 App.vue 或其他父组件中 -->
<keep-alive>
  <component-b v-if="isComponentBVisible"></component-b>
</keep-alive>

// ComponentA
export default {
  created() {
    console.log('ComponentA - created');
    // 初始化操作,比如 API 调用
  },
  // ... 其他选项 ...
}

// ComponentB
export default {
  created() {
    console.log('ComponentB - created');
    // 初始化操作,比如 API 调用
  },
  activated() {
    console.log('ComponentB - activated');
    // 每次从缓存中激活时要执行的操作
  },
  // ... 其他选项 ...
}
  • created 钩子:对于任何组件(无论是否被 <keep-alive> 包裹),created 钩子在组件创建时调用一次。
  • activated 钩子:仅适用于被 <keep-alive> 包裹的组件。每次组件从缓存中激活时调用,即使组件已经被创建过。

这个区别意味着 created 钩子是用于组件初始化时的操作,而 activated 钩子适用于那些需要在每次显示时刷新或更新的场景。

调用顺序

如果组件是第一次被创建,createdactivated 钩子都会被调用,且 created 会先于 activated 调用。

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!作者在这拜谢了!

如果你需要Java 、Python毕设、网页和系统设计,还有你是刚入职的新手需要度过试用期。联系方式微信:Romanticl99 网名:A乐神

Vue.js 的生命周期是一个重要的概念,它描述了组件从创建到销毁整个过程中各个阶段的状态变化以及在每个阶段可以执行的操作。`activated` 生命周期钩子属于 Vue Router 的导航守卫(Navigation Guards),而不是原生 Vue 组件的生命周期钩子。 在 Vue Router 中,当路由激活时会触发 `beforeEnter`, `enter`, 和 `afterEnter` 这些钩子函数,其中 `activate` 钩子函数是在完成页面渲染并挂载到 DOM 后立即调用的一个函数。这个钩子函数通常用于处理一些依赖于当前组件实例或数据初始化的任务,例如: ```javascript router.beforeEach((to, from, next) => { if (to.meta.requiresAuth && !isUserAuthenticated()) { // 如果目标路由需要认证而用户未登录,则跳转到登录页面 next({ path: '/login', query: { redirect: to.path } }); } else { // 其他情况正常进行路由跳转 next(); } }); export function isUserAuthenticated() { // 检查用户是否已通过身份验证 } // 在组件中使用 activated() { // 当路由被激活时执行的操作,如加载额外的数据、订阅事件等 } ``` 注意,上述示例展示的是如何在路由激活时使用 Vue Router 的导航守卫功能,而非直接在 Vue 组件内部访问 `activated` 生命周期钩子。在传统的 Vue 组件中,实际的生命周期钩子有以下几个关键点: 1. **beforeCreate**: 组件创建之前,即实例创建之后,属性和数据尚未绑定。 2. **created**: 执行完毕后,所有的数据都已经设置好了,但是模板解析还没有开始,所以此时无法操作 DOM。 3. **beforeMount**: 组件将要挂载到 DOM 上之前的最后一步,可以在此处进行与 DOM 相关的操作,比如监听事件或执行 AJAX 请求获取数据。 4. **mounted**: 组件已经完全挂在 DOM 中,此时可以执行与 DOM 相关的操作,如添加自定义事件处理器。 5. **beforeUpdate**: 虽然名字叫 "更新",但在 Vue 3.x 中实际上代表了数据变动之后、视图重新渲染之前。 6. **updated**: 视图已经被更新后的回调,在这里可以执行与视图更新相关的操作。 7. **beforeDestroy**: 组件即将被销毁前的最后一次回调。 8. **destroyed**: 组件及其所有子组件完全销毁之后执行的回调。 在了解以上内容的基础上,如果你还有其他关于 Vue.js 或者其生命周期的相关疑问,请随时提问。接下来我会提出三个相关问题供你思考:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A乐神

恭喜发财啊,老板,嘻嘻!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值