Vue3 常用的10个组合式 API

2024-01-025,917阅读6分钟

Vue.js是一个用于开发Web应用程序的强大JavaScript框架。Vue 2 于 2023 年 12 月 31 日停止维护。而通过Vue 3,组合式API增强了我们利用Vue的能力,使我们的代码更具模块性和可读性。下面分享10个常用的Vue3组合式API:

Real World Vue 3 - Composition API.png

Refs

在Vue 3中,通过组合式API提供的ref函数,数据管理变得更加便利。ref允许我们使用Vue的响应式系统跟踪变量的值,使我们能够在组件内更新这个值。ref还将值包装起来,以与Vue的响应性兼容。这样,我们可以更灵活地处理和更新组件中的数据。

import { ref } from 'vue';  const count = ref(0);  const increment = () => {  
count.value++;  
};  

在这个例子中,定义了一个名为countref,并使用increment函数递增它的值。

Computed

使用组合式API创建计算属性有助于在组件内基于依赖关系表示和自动更新值。在Vue 3中,可以使用computed函数来定义计算属性。计算属性依赖于其他响应式数据,并且只有在依赖发生变化时才会重新计算值。这使得在组件中表示和处理衍生数据变得更为简便和高效。

 
import { ref, computed } from 'vue';  const count = ref(0);  const squared = computed(() => count.value * count.value);  

在这个例子中,定义了一个名为squared的计算属性,表示count的平方。

Watch 和 WatchEffect

Vue的watchwatchEffect函数允许我们观察值的变化并相应地做出反应。watch函数用于监视特定数据的变化,并在数据变化时执行回调函数。它接受两个参数:要监视的数据和回调函数。当监视的数据发生变化时,回调函数将被触发。watchEffect函数也用于监视数据的变化,但它不需要指定要监视的特定数据。相反,它会自动追踪在其函数体中使用的任何响应式数据,并在这些数据发生变化时触发回调函数。

import { ref, watch, watchEffect } from 'vue';  const count = ref(0);  watch(count, (newValue, oldValue) => {  console.log(`Count changed from ${oldValue} to ${newValue}`);  
});  watchEffect(() => {  console.log(`Count is: ${count.value}`);  
});  

 

在这个例子中,watch函数观察count值的变化,而watchEffect函数在每次渲染后观察count值。

重用方法和函数

在Vue组件中将方法和函数定制为自定义钩子使它们能够在其他组件中被重复使用,提高代码的可读性和可重用性。我们可以将一些具有通用性的逻辑封装为函数或方法,并在需要的时候通过自定义钩子进行重用。这样做不仅使代码更易于维护,还提高了组件之间的代码共享。

 
  //hooks/useLocalStorage.js
export default function useLocalStorage(key, defaultValue) {  const value = ref(JSON.parse(localStorage.getItem(key)) || defaultValue);  const updateValue = (newValue) => {  value.value = newValue;  localStorage.setItem(key, JSON.stringify(newValue));  
};  return {  
value,  
updateValue,  
};  
}<script setup>  
import useLocalStorage from '@/hooks/useLocalStorage';  const { value: storedData, updateValue: updateStoredData } = useLocalStorage('dataKey', 'defaultData');  
</script>

在这个例子中,定义了一个名为useLocalStorage的自定义钩子,用于处理存储在本地存储中的值,该值由指定的键(key)决定。

生命周期

在组合式API中,通过使用 onMountedonUpdatedonUnmounted 函数来管理组件的生命周期。onMounted 钩子在组件被挂载到DOM后调用。onUpdated 钩子在组件更新后调用。onUnmounted 钩子在组件被销毁前调用。

import { onMounted, onUnmounted } from 'vue';  onMounted(() => {  console.log('Component is mounted');  
});  onUnmounted(() => {  console.log('Component is unmounted');  
});  

 

在这个例子中,onMounted 函数捕获了组件挂载时的时刻,而 onUnmounted 函数捕获了组件卸载时的时刻。

API请求和异步

在Vue组件中进行API请求和管理异步操作时,可以使用像axios这样的库。

import axios from 'axios';
import {ref} from 'vue';    
const fetchData = async () => {  
try {  
const response = await axios.get('https://api.example.com/data');console.log('Data:', response.data);  
} catch (error) {console.error('Error fetching data:', error);  
}  
};

 

在这个例子中,使用axios库进行了一个API请求,尝试检索数据。任何错误都被记录到控制台。

路由和Vue Router

在Vue项目中启用页面之间的导航并配置路由,可以使用Vue Router。


const routes = [{ path: '/', component: Home },{ path: '/about', component: About },
];const router = createRouter({history: createWebHashHistory(),routes,
});  <script setup>import {useRoute} from 'vue-router';const route = useRoute();
</script>

在这个例子中,使用Vue Router建立了一个简单的路由配置,并使用useRoute函数在组件内部访问当前路由的信息。

Vuex

使用Vuex进行大型应用的状态管理,在大型应用中,为了更有效地管理状态,可以使用Vuex,它是Vue.js官方提供的状态管理库。Vuex允许你在应用的多个组件之间共享和管理状态,以确保状态的一致性和可维护性。

import { createStore } from 'vuex';  const store = createStore({  
state: {  count: 0,  
},  
mutations: {  increment(state) {  state.count++;  
},  
},  
});  <script setup>  
import { useStore } from 'vuex';  const store = useStore();  
</script>

 

在这个例子中,使用Vuex创建了一个简单的store,并使用useStore函数在组件内部访问store。

UI组件

创建可定制和可重用的Vue UI组件,在Vue.js中,你可以创建可定制和可重用的Vue UI组件,使得这些组件在应用中能够灵活适应不同的需求。在设计组件时,考虑到组件的灵活性、易用性和可维护性是至关重要的。

<button :class="buttonClass" @click="handleClick">  
<slot></slot>  
</button>  
</template>  <script setup>  
import { computed } from 'vue';  const buttonClass = computed(() => {  
return 'button ' + (isPrimary ? 'primary' : 'secondary');  
});  const handleClick = () => {  
// Button click operations  
};  

在这个例子中,创建了一个可定制的按钮组件,通过使用插槽slot实现动态内容。

测试驱动开发(TDD)

测试驱动开发是一种开发方法,其核心理念是在编写实际代码之前先编写测试。在Vue.js开发中,TDD可以帮助确保应用的各个部分具有良好的测试覆盖率,提高代码质量和可维护性。

import { mount } from '@vue/test-utils';  
import MyComponent from '@/components/MyComponent.vue';  test('MyComponent renders correctly', () => {  
const wrapper = mount(MyComponent);  
expect(wrapper.html()).toMatchSnapshot();  
});  

在这个例子中,使用Vue Test Utils进行了一个简单的测试,以确保组件正确渲染。

Vue 3 的 组合式 API 引入了一种新的组件组织形式,以及更灵活的逻辑组织方式。允许将组件的逻辑按照功能划分到不同的函数中,而不再局限于原先的选项(data、methods、computed等)。通过创建可复用的函数,你可以在不同的组件中使用相同的逻辑,从而提高代码的可维护性和可复用性。提供了更好的 TypeScript 支持,使得在 Vue 项目中使用 TypeScript 更加流畅。使得开发者能够更好地处理复杂的组件逻辑,并在项目中更好地利用 TypeScript 的优势.

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[office] excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法 #笔记#学习方法

excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法 在日常工作中经常会到用excel&#xff0c;有时需要计算毛重和皮重的时间间隔&#xff0c;具体的计算方式是什么&#xff0c;一起来了解一下吧 在日常工作中经常会到用excel&#xff0c;在整理编辑过磅数据…

美创科技与河南金融信创生态实验室签署战略合作协议

2024年1月31日&#xff0c;由普惠通科技与河南省科学院物理所、北京交通大学、中国金融电子化集团重庆金融认证中心联合发起成立中部地区第一家金融信创生态实验室运营公司&#xff08;即河南豫科普惠通信创科技有限公司&#xff09;与杭州美创科技股份有限公司战略合作签约仪式…

【python】学习笔记02-判断语句

2.1 布尔类型和比较运算符 1. 在Python中&#xff0c;可以表示真假的数据类型是&#xff1a; 布尔类型&#xff0c;字面量True表示真&#xff0c;字面量False表示假 2. 除了可以定义布尔类型外&#xff0c;还可以通过____计算得到布尔类型&#xff1f; 通过<比较运算符>…

精雕细琢的文档体验:Spring Boot 与 Knife4j 完美交汇

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 精雕细琢的文档体验&#xff1a;Spring Boot 与 Knife4j 完美交汇 前言Knife4j 与 Swagger 的区别1. 特性与优劣势对比&#xff1a;Knife4j&#xff1a;Swagger&#xff1a; 2. 选择 Knife4j 的理由&a…

STL之stack+queue的使用及其实现

STL之stackqueue的使用及其实现 1. stack&#xff0c;queue的介绍与使用1.1stack的介绍1.2stack的使用1.3queue的介绍1.4queue的使用 2.stack&#xff0c;queue的模拟实现2.1stack的模拟是实现2.2queue的模拟实现 3.总结 所属专栏&#xff1a;C“嘎嘎" 系统学习❤️ &…

话题:IT行业有哪些证书含金量高?

IT行业有哪些证书含金量高? 1. 以下是一些在IT行业中我认为具有高含金量的证书&#xff1a; 思科认证&#xff08;Cisco Certifications&#xff09;&#xff1a;思科认证是由网络领域的著名厂商——Cisco公司推出的&#xff0c;是互联网领域的国际权威认证。这个认证体系包含…

如何像工程师一样阅读 - 快速阅读技术书籍的9个技巧

0. 目的 在看了 Read Like an Engineer: 9 Tips for Reading Technical Books Fast 之后&#xff0c; 记录一些个人的看法&#xff0c;并在这篇英文文章上作为实验&#xff0c; 记录一下正确的阅读方法。 1. 第一次阅读 1.1 生词表 parcel of the job: 工作中必不可少的部分…

使用cocos2d-console初始化一个项目

先下载好cocos2d-x的源码包 地址 https://www.cocos.com/cocos2dx-download 这里使用的版本是 自己的电脑要先装好python27 用python安装cocos2d-console 看到项目中有个setup.py的一个文件 python setup.py 用上面的命令执行一下。 如果执行正常的话回出现上面的图 然后…

Vue事件中如何使用 event 对象

在Vue中&#xff0c;事件处理函数常常需要获取事件触发时的相关信息&#xff0c;比如鼠标位置、按键信息等。而要获取这些信息&#xff0c;就需要使用event对象。那么在Vue的事件中如何正确使用event对象呢&#xff1f;接下来就来详细介绍一下。 首先&#xff0c;在Vue的事件中…

通过遵循最佳做法来提高 EDA 和 HPC 应用程序的 Azure NetApp 文件性能

介绍 Azure NetApp 文件是一项托管存储解决方案&#xff0c;适用于各种方案&#xff0c;包括高性能计算 (HPC) 基础结构。 低延迟和每秒高 I/O 操作数 (IOPS) 对于大规模企业而言是一种很好的组合。 假设你就职于一家半导体公司。 你的任务是设计公司的集成电路芯片&#xff…

P59---第二阶段B C 相电流

P59---第二阶段B C 相电流

curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION

文章目录 curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION概述笔记END curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION 概述 在看一个开源工程, 里面用到了curl和openssl, 但是工程使用vcpkg来管理的包, 用CMake来编译 依赖太多了, win10 编译选项为 vs2019 x64/Win32(或者Ninja)…

STM32F1 - 标准外设库_规范

STM32F10x_StdPeriph_Lib_V3.6.0 1> 头文件包含关系2> .c文件内部结构3> 宏定义位置4> 位掩码bit mask5> .c文件中定义私有变量 1> 头文件包含关系 1个头文件stm32f10x.h 就把整个MCU以及标准外设库&#xff0c;就管理了&#xff1b; 2> .c文件内部结构 …

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…

C++ 中的模型预测控制(01/2)

目录 一、说明二、MPC原理说明三、分解算法的来源并显示关键特征&#xff0c;四、C 实现说明五、平衡 Q 和 R六、资源下载地址 一、说明 以下文章介绍了应用模型预测控制器的简单控制系统方法。本文讨论了这种控制的基本机制&#xff0c;该机制适用于各种工程领域。 MPC 涉及对…

4.5 特效规范与拆分实现及程序的调用原理

一、特效基础流程 落地方案 连入游戏 需求 策划需求,美术需求 需要的SHADER,功能 测试/反馈/修改 效果迭代 满足功能的特效 概念设计 参考图,设计图 二、规范的设计原理与目的 节约沟通成本 保持项目的一致性 工作交接可以更加便捷 降低出错的概率 提升工作效率…

【数据结构】前缀树的模拟实现

目录 1、什么是前缀树&#xff1f; 2、模拟实现 2.1、前缀树节点结构 2.2、字符串的添加 2.3、字符串的查寻 2.3.1、查询树中有多少个以字符串"pre"作为前缀的字符串 2.3.2、查询某个字符串被添加过多少次 2.4、字符串的删除 3、完整代码 1、什么是前缀树&…

Vue-Vue3 集成编辑器功能

1、安装依赖 编辑器插件需要安装 wangeditor/editor 和 wangeditor/editor-for-vue 两个插件 npm install wangeditor/editor --savevue3运行如下命令安装 npm install wangeditor/editor-for-vuenext --savevue2运行如下命令安装 npm install wangeditor/editor-for-vue -…

设计模式3-责任链模式

责任链模式是一种行为设计模式&#xff0c;它允许你创建一个对象链。请求沿着这条链传递&#xff0c;直到有一个对象处理它为止。这种模式通常用于需要以某种方式动态地决定处理请求的顺序或方式的情况。 类图&#xff1a; 从图中可见最大的特点是AbstractHandler它自己聚合了自…

华清作业day56

SQLite特性&#xff1a; 零配置一无需安装和管理配置&#xff1b;储存在单一磁盘文件中的一个完整的数据库&#xff1b;数据库文件可以在不同字节顺序的机器间自由共享&#xff1b;支持数据库大小至2TB&#xff1b;足够小&#xff0c;全部源码大致3万行c代码&#xff0c;250KB…