Vue3学习(生命周期,hooks,axios的简单讲解)

一,前言

继续努力,南方见。

二,生命周期

1.对生命周期的理解

例如:人的生命周期,出生,经历,死亡

组件的话就是,创建,挂载,更新,销毁。***在特定的时刻调用特定的函数,***钩子也叫生命周期函数。

2,Vue2的生命周期

生命周期函数

创建前,创建完毕,挂载前,挂载完毕,更新前,更新完毕,销毁前,销毁完毕。

Vue2 的生命周期包含 8 个主要钩子函数:

  1. beforeCreate :实例初始化之后,数据观测 data observerevent/watcher 事件配置之前被调用。
  2. created :实例已经创建完成之后被调用。在这一步,实例已经完成了数据观测 data observerpropertymethod 的计算,watch/event 事件回调。然而,挂载阶段还没有开始,$el 属性目前不可用。
  3. beforeMount :在挂载开始之前被调用:相关的 render 函数首次被调用。
  4. mountedel 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
  5. beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。
  6. updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
  7. beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
  8. destroyed:Vue 实例销毁后调用。调用后,所有的事件监听器和子实例都已经被销毁。

在Vue2中使用npm run serve 运行项目。可以在package.json中查到。

Vue2中组件名使用多单词

3,Vue3的生命周期

Vue3将销毁改叫卸载

Vue3 对生命周期进行了一些调整,同时引入了组合式 API:

  1. setup :在创建组件实例时,初始化 props 和上下文之后立即调用 setup。它是组合式 API 的入口点,在 beforeCreate 之前调用。
  2. onBeforeMount :对应 Vue2 的 beforeMount,在挂载开始之前被调用。
  3. onMounted :对应 Vue2 的 mounted,组件挂载完成后调用。
  4. onBeforeUpdate :对应 Vue2 的 beforeUpdate,在数据更新前调用。
  5. onUpdated :对应 Vue2 的 updated,在数据更新后调用。
  6. onBeforeUnmount :对应 Vue2 的 beforeDestroy,在组件实例卸载之前调用。
  7. onUnmounted :对应 Vue2 的 destroyed,在组件实例卸载之后调用。
  8. onErrorCaptured:当捕获到一个来自子孙组件的错误时被调用。
  9. onRenderTracked:调试钩子,当一个响应式依赖被组件渲染跟踪时调用。
  10. onRenderTriggered:调试钩子,当一个响应式依赖触发组件渲染时调用。
  11. onActivated :在使用 <keep-alive> 缓存的组件被激活时调用。
  12. onDeactivated :在使用 <keep-alive> 缓存的组件被停用时调用。

生命周期对比表

Vue2 钩子 Vue3 组合式 API 等效钩子
beforeCreate setup()
created setup()
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeDestroy onBeforeUnmount
destroyed onUnmounted
activated onActivated
deactivated onDeactivated
errorCaptured onErrorCaptured

Vue3 通过组合式 API 提供了更灵活的方式来组织和复用逻辑,同时保留了选项式 API 的使用方式,让开发者可以根据项目需求进行选择。

三,Hooks

Vue3 的 Hook (组合式函数)是自定义的可复用逻辑函数,使用 Composition API(如 refreactivewatch)封装有状态的逻辑。

核心作用:

  1. 逻辑复用:提取公共逻辑,避免重复代码。
  2. 状态管理:封装有状态的逻辑(如计数器、表单验证)。
  3. 副作用处理:管理生命周期、事件监听等副作用。
  4. 代码组织:将相关逻辑集中到一个函数中,提高可读性。

核心特点:

  1. 复用逻辑:提取公共逻辑(如计数器、窗口监听)。
  2. 响应式 :使用 ref/reactive 管理状态。
  3. 生命周期安全 :通过 onMounted/onUnmounted 处理副作用。

基础示例:

javascript 复制代码
// useCounter.js
import { ref } from 'vue'

export function useCounter(initialValue = 0) {
  const count = ref(initialValue)
  const increment = () => count.value++
  
  return { count, increment }
}

使用方式:

vue 复制代码
<script setup>
import { useCounter } from './useCounter'
const { count, increment } = useCounter(0)
</script>

优势:

  • 逻辑复用更灵活
  • 代码组织更清晰
  • 跨组件共享状态逻辑

常见应用场景:

  • 表单处理
  • 数据获取与缓存
  • 事件监听与清理
  • 响应式窗口尺寸
  • 本地存储管理

四,axios

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它的特点是支持 Promise API、拦截请求和响应、转换请求和响应数据、取消请求、自动转换 JSON 数据以及客户端支持防御 XSRF 等。必须掌握

安装

使用 npm 或 yarn 安装:

bash 复制代码
npm install axios
# 或
yarn add axios
  1. 基础用法:支持 GET、POST 等请求方法,返回 Promise
javascript 复制代码
// GET 请求
axios.get('/api/data').then(res => console.log(res.data));

// POST 请求
axios.post('/api/submit', { data: 'value' });

2.特性

  • 自动转换 JSON 数据
  • 拦截请求和响应(如添加 token)
  • 请求取消与超时处理
  • 错误统一处理

3.常见场景

javascript 复制代码
// 全局配置
axios.defaults.baseURL = 'https://api.example.com';

// 拦截器(添加 token)
axios.interceptors.request.use(config => {
  config.headers.Authorization = localStorage.getItem('token');
  return config;
});

// 错误处理
axios.get('/data').catch(err => {
  if (err.response.status === 401) {
    // 处理未授权
  }
});

适合前后端数据交互,尤其在 React/Vue 项目中广泛使用。

相关推荐
excel6 分钟前
JavaScript 中 WeakMap、WeakSet、Set、Map、Object、Array 的区别与应用场景
前端
两颗泡腾片37 分钟前
C++提高编程学习--模板
c++·学习
haaaaaaarry43 分钟前
Element Plus常见基础组件(一)
java·前端·javascript·vue.js
qingyingWin1 小时前
原生微信小程序研发,如何对图片进行统一管理?
前端·微信小程序
shangyingying_11 小时前
关于神经网络CNN的搭建过程以及图像卷积的实现过程学习
神经网络·学习·cnn
不懂英语的程序猿1 小时前
【JEECG】JVxeTable表格拖拽排序功能
前端·后端
拾光拾趣录1 小时前
前端灵魂拷问:从URL到Redux,17个常见问题
前端·面试
萌萌哒草头将军1 小时前
Prisma ORM 又双叒叕发布新版本了!🚀🚀🚀
前端·javascript·node.js
mldong2 小时前
推荐一款超高颜值的后台管理模板!Art-Design-Pro!开源!免费!
前端·vue.js·架构
草字2 小时前
uniapp 如果进入页面输入框自动聚焦,此时快速返回页面或者跳转到下一个页面,输入法顶上来的页面出现半屏的黑屏问题。
java·前端·uni-app