vue created(手把手讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

在 Vue.js 开发中,组件的生命周期是理解框架运行机制的核心概念之一。而 created 钩子作为 Vue 组件生命周期中的关键阶段,常被开发者用于初始化数据、执行异步操作或绑定事件监听器。对于编程初学者而言,掌握 vue created 的应用场景和最佳实践,能够显著提升代码的可维护性和开发效率。本文将从基础概念、实际案例到进阶技巧,系统性地解析 vue created 的工作原理与使用场景。


一、Vue 组件生命周期与 Created 钩子的定位

1.1 生命周期的类比:电影拍摄流程

可以将 Vue 组件的生命周期想象为一部电影的拍摄过程:

  • 创建组件(如 created)对应“剧本编写阶段”,此时角色和场景尚未搭建,但故事框架已确定;
  • 挂载组件(如 mounted)对应“实际拍摄阶段”,此时场景和演员(DOM 元素)已就位;
  • 销毁组件(如 beforeDestroy)则类似于“剪辑成片阶段”,所有资源被清理。

1.2 Created 钩子的核心功能

created 是 Vue 组件生命周期中的第一个可操作阶段,此时:

  • 组件的 datamethods 已初始化,但 DOM 尚未渲染
  • 适合执行 非 DOM 操作,例如:
    • 初始化数据;
    • 发送 API 请求;
    • 绑定全局事件监听器;
    • 处理业务逻辑预加载。

二、Created 钩子的使用场景与代码示例

2.1 场景 1:初始化数据

假设需要在组件加载时,从本地存储读取用户偏好设置:

export default {  
  data() {  
    return {  
      userPreferences: {}  
    };  
  },  
  created() {  
    // 从 localStorage 中读取数据  
    const storedPrefs = localStorage.getItem('userPrefs');  
    if (storedPrefs) {  
      this.userPreferences = JSON.parse(storedPrefs);  
    }  
  }  
};  

比喻:这就像在电影开拍前,导演先准备好剧本和道具,确保后续拍摄顺利进行。

2.2 场景 2:发起异步请求

created 钩子中发送 API 请求是常见操作:

created() {  
  // 模拟异步请求  
  this.fetchData().then(response => {  
    this.items = response.data;  
  });  
},  
methods: {  
  fetchData() {  
    return new Promise((resolve) => {  
      setTimeout(() => resolve({ data: ['Item 1', 'Item 2'] }), 1000);  
    });  
  }  
}  

注意:由于此时 DOM 未渲染,切勿在此阶段操作 DOM 元素(如 this.$el)。

2.3 场景 3:绑定全局事件

若需监听全局事件(如 WebSocket 消息),可在 created 中绑定,beforeDestroy 中解绑:

created() {  
  window.addEventListener('messageEvent', this.handleGlobalMessage);  
},  
beforeDestroy() {  
  window.removeEventListener('messageEvent', this.handleGlobalMessage);  
}  

三、Created 与其他生命周期钩子的对比

3.1 Created vs. Mounted

钩子执行时机典型用途
created组件初始化完成后,DOM 未渲染数据初始化、异步请求
mountedDOM 渲染完成后DOM 操作、第三方库初始化

比喻created 是“准备食材”,mounted 是“开始烹饪”。

3.2 Created vs. BeforeCreate

beforeCreatecreated 的前置阶段,此时:

  • datamethods 尚未初始化;
  • 仅适合极少场景(如直接操作 Vue 实例原型)。

四、进阶技巧与常见问题

4.1 在 Created 中处理异步操作

若需等待异步操作完成后再执行其他逻辑,可使用 async/await

async created() {  
  await this.fetchData();  
  this.processData(); // 仅在 fetchData 成功后执行  
}  

4.2 避免在 Created 中操作 DOM

尝试访问 this.$eldocument.getElementById 会导致错误,因为 DOM 尚未生成。
解决方案:将相关逻辑移至 mounted 钩子中。

4.3 频繁触发 Created 的问题

若组件因父级状态变化而频繁销毁并重新创建,created 会重复执行,可能引发性能问题。
优化建议

  • 使用 key 属性控制组件唯一性;
  • 将无需重复执行的逻辑移至 beforeCreate 或父组件中。

五、实战案例:用户登录状态检测

5.1 需求背景

在用户登录后,需在首页组件中检测登录状态并展示个性化内容。

5.2 实现步骤

  1. created 中检测本地存储
    created() {  
      const token = localStorage.getItem('auth_token');  
      if (!token) {  
        this.$router.push('/login'); // 未登录则跳转到登录页  
      }  
    }  
    
  2. 挂载时渲染用户信息
    mounted() {  
      this.fetchUserProfile().then(profile => {  
        this.user = profile;  
      });  
    }  
    

5.3 代码设计原则

  • 分离关注点created 负责状态校验,mounted 负责 DOM 相关操作;
  • 避免冗余:若登录校验需全局生效,可将其封装为 Vue 插件或路由守卫。

六、总结与展望

通过本文的讲解,我们明确了 vue created 在组件生命周期中的定位,以及其在数据初始化、异步请求和事件监听等场景中的核心作用。对于开发者而言,合理利用 created 钩子能够显著提升代码的逻辑清晰度和执行效率。未来,随着 Vue 4 的迭代,其生命周期机制可能会进一步优化,但 created 的基础地位仍将持续。建议读者通过实际项目不断实践,逐步掌握 Vue 生命周期的深度应用技巧。

关键词布局验证

  • 标题:Vue Created
  • 小标题:深入理解 Vue Created 钩子、Vue Created 的实际应用场景
  • 正文:多次自然提及“created”“vue created”作为技术术语

希望本文能为你的 Vue 开发之路提供清晰的指引!

最新发布