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 等效钩子
beforeCreatesetup()
createdsetup()
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeDestroyonBeforeUnmount
destroyedonUnmounted
activatedonActivated
deactivatedonDeactivated
errorCapturedonErrorCaptured

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

三,Hooks

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

核心作用:

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

核心特点:

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

基础示例:

// useCounter.js
import { ref } from 'vue'export function useCounter(initialValue = 0) {const count = ref(initialValue)const increment = () => count.value++return { count, increment }
}

使用方式:

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

优势:

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

常见应用场景:

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

四,axios

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

安装

使用 npm 或 yarn 安装:

npm install axios
# 或
yarn add axios
  1. 基础用法:支持 GET、POST 等请求方法,返回 Promise
// GET 请求
axios.get('/api/data').then(res => console.log(res.data));// POST 请求
axios.post('/api/submit', { data: 'value' });

2.特性

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

3.常见场景

// 全局配置
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 项目中广泛使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85300.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch实战四 基于 VGG net 搭建一个串联的神经网络结构

系列文章目录 文章目录 系列文章目录前言一、VGG类的搭建1.源码2.初始化类2.1 初始化函数2.2 前向传播函数 forward(self,x) 二、卷积补充卷积 前言 对于标准的 VGG net 输入图像的尺寸是 24 x 24,进行 32 维的下采样之后得到一个 7 x 7 的特征图&#xff0c;然后用 FC 层完成分…

大学专业解读——计算机

我们继续&#xff0c;讲讲排名第二流行的新工科专业——计算机。说到计算机&#xff0c;可能所有人都知道&#xff0c;但具体到细分的专业类别&#xff0c;除了计算机科学&#xff0c;其实大多数人都是不了解的。 序&#xff1a; 计算机主要有如下几个专业&#xff1a; 计算机…

Bootstrap 5学习教程,从入门到精通, Bootstrap 5 列表组(List Group)语法知识点及案例(14)

Bootstrap 5 列表组(List Group)语法知识点及案例 一、列表组基础语法 列表组是Bootstrap中用于显示一系列内容的灵活组件&#xff0c;常用于显示菜单、导航或任何项目列表。 基本列表组结构 <ul class"list-group"><li class"list-group-item&quo…

FPGA基础 -- Verilog 命名事件

Verilog 的“命名事件&#xff08;Named Events&#xff09;”机制 进行一次系统、专业的培训。该机制在 Verilog 中是比较冷门但重要的仿真控制特性&#xff0c;主要用于 模块间同步、行为仿真触发、事件通信&#xff0c;在复杂的 Testbench、行为模型中尤为重要。 一、命名事…

《Go语言圣经》结构体

《Go语言圣经》结构体 一、结构体指针的高效应用 在处理大型结构体时&#xff0c;为避免内存复制&#xff0c;通常使用指针传递和返回结构体&#xff1a; // 通过指针传入结构体&#xff0c;避免值拷贝 func Bonus(e *Employee, percent int) int {return e.Salary * percen…

Ascend上如何进行带宽测试

1 工具安装 1.1 下载链接 https://www.hiascend.com/developer/download/community/result?moduledl%2Bcann 1.2 安装指令&#xff1a; ./Ascend-mindx-toolbox_{version}_linux-{arch}.run --install设置环境变量&#xff1a; source /usr/local/Ascend/toolbox/set_env.…

生产BUG集

磁盘达到阈值导致ES无法删除数据 method [POST], host [http://xx.xxx.xxx.xxx:9200], URI [/security_event/_delete_by_query?slices1&requests_per_second-1&ignore_unavailablefalse&expand_wildcardsopen&allow_no_indicestrue&ignore_throttledtru…

基于FastAPI与Selenium的智能开关状态管理系统实践

引言 在工业物联网&#xff08;IIoT&#xff09;与自动化控制场景中&#xff0c;设备状态的实时监控与自然语言指令执行是提升效率的关键。本文将介绍一种基于 FastAPI 和 Selenium 的智能设备状态管理系统&#xff0c;通过大语言模型&#xff08;LLM&#xff09;解析用户指令…

主体和债项均为“AAA”等级 海尔消金发行10亿金融债

6月18日&#xff0c;继年内发行ABS、落地ESG挂钩银团贷后&#xff0c;海尔消费金融&#xff08;以下简称“海尔消金”&#xff09;在金融市场上又迈出重要一步&#xff0c;成功簿记发行2025年首期规模达10亿元金融债&#xff0c;且主体信用等级仍为“AAA”。这一举措为海尔消金…

n8n:轻松自动化您的工作流

借助开源自动化利器 n8n&#xff0c;释放重复劳动的生产力&#xff01; 引言 n8n 是一款免费、开源的工作流自动化工具&#xff0c;致力于帮助开发者和团队通过连接各种应用和服务&#xff0c;实现重复任务的自动化处理。 它由 Jan Oberhauser 于 2019 年在德国柏林创建&…

Angular--Hello(TODO)

最近有个小错误&#xff0c;因为最近还是在看thingsboard&#xff0c;最近终于看到前端的代码&#xff0c;突然发现怎么全是ts的文件&#xff0c;仔细一看原来并不是之前认为的AngularJS&#xff0c;而是Angular。。。我tm真的无语了&#xff0c;又要去重新学。。。 Angular的…

在 Linux 系统中通过 yum 安装 Sublime Text

在 Linux 系统中通过 yum 安装 Sublime Text 的步骤如下&#xff1a; ​步骤 1&#xff1a;导入 GPG 公钥​ sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg 这一步用于验证软件包的合法性。 ​步骤 2&#xff1a;添加 Sublime Text 的软件仓…

面向自主多星对地观测的多智能体强化学习

大家读完觉的有帮助记得及时关注和点赞&#xff01;&#xff01;&#xff01; 抽象 近地轨道 &#xff08;LEO&#xff09; 卫星的指数级增长彻底改变了地球观测 &#xff08;EO&#xff09; 任务&#xff0c;解决了气候监测、灾害管理等方面的挑战。然而&#xff0c;多卫星系统…

flutter 短视频相关插件选型

​插件名称​​核心优势​​缺点​​短视频场景适用性​​推荐指数​​video_player​ (官方基础库)• 官方维护&#xff0c;跨平台兼容性最佳&#xff08;iOS/Android/macOS&#xff09; • 轻量级&#xff0c;无额外依赖&#xff0c;启动速度快 • 支持本地/网络视频、基础播…

QTableView为例:Qt模型视图委托(MVD)(Model-View-Delegate)

文章目录 1. QT中的MVD模式2. View3. Model4. Delegate5. 以TableView为例 1. QT中的MVD模式 模型视图委托&#xff08;MVD&#xff09;是Qt中特有的设计模式&#xff0c;类似MVC设计模式&#xff0c;将MVC设计模式中的Controller当做MVD中的Delegate&#xff0c;两者的概念基…

uni-app总结3-项目新建运行调试

一、新建项目 通过HbuilderX新建 在点击工具栏里的文件 -> 新建 -> 项目&#xff08;快捷键CtrlN&#xff0c;MacOS上是CMD N&#xff09;&#xff1a; 左测Tab选择uni-app类型&#xff0c;输入工程名&#xff0c;选择模板&#xff0c;Vue版本选择3&#xff0c;其他不…

LeetCode 每日一题打卡|若谷的刷题日记 4day--移动零

移动零 题目&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1&#xff1a; 输入: nums [0,1,0,3,12] 输出: [1,3,1…

简历模板3——数据挖掘工程师5年经验

姓名 / Your Name 数据挖掘工程师 | 5年经验 | 推荐/画像/反欺诈 &#x1f4de; 138-XXXX-XXXX | ✉️ your.emailexample.com | &#x1f310; github.com/yourname | &#x1f4cd; 北京 &#x1f3af; 个人简介 / Summary 5年大厂数据挖掘工程经验&#xff0c;硕士学历&am…

Vue添加图片作为水印

直接上代码 把图片作为水印 <div class"info-warp"><div class"image-container"><img src"https://img.shetu66.com/2023/06/28/1687920981963810.png" /><div class"watermark-layer"><imgv-for"…

Conda 常用命令大全:从入门到高效使用

Conda 常用命令大全&#xff1a;从入门到高效使用 Conda 是 Python 生态中最流行的环境管理工具之一&#xff0c;它不仅可以管理 Python 包&#xff0c;还能创建隔离的虚拟环境&#xff0c;适用于数据分析、机器学习、科学计算等场景。本文将介绍 Conda 的常用命令&#xff0c…