告别Vue 2时代:Composables,你的下一代状态逻辑复用神器

简介: 告别Vue 2时代:Composables,你的下一代状态逻辑复用神器

还记得在Vue 2的日子里,我们是如何复用状态逻辑的吗?mixins?它就像一盒不知道来源的巧克力,你永远不知道下一个属性名冲突会在哪里爆发。或者高阶组件?它们常常带来不必要的包装地狱,让组件树变得臃肿不堪。

Vue 3的Composition API,特别是Composables,正是为了优雅地解决这些问题而生。

什么是Composables?

简单来说,它就是一个利用Vue 3的ref、computed、onMounted等响应式API,将可复用的状态逻辑“组合”到一个函数中的模式。你可以把它想象成一个自带响应式能力的、高度可定制的自定义Hook。

一个简单的例子:useCounter

让我们创建一个经典的计数器逻辑:

// useCounter.js
import {
    ref } from 'vue';

export function useCounter(initialValue = 0) {
   
  const count = ref(initialValue);

  const increment = () => count.value++;
  const decrement = () => count.value--;
  const reset = () => count.value = initialValue;

  return {
    count, increment, decrement, reset };
}

现在,在任何组件中,你都可以像这样使用它:

<template>
  <div>
    <p>当前计数:{
  { count }}</p>
    <button @click="increment">+1</button>
    <button @click="decrement">-1</button>
    <button @click="reset">重置</button>
  </div>
</template>

<script setup>
import { useCounter } from './useCounter';

const { count, increment, decrement, reset } = useCounter(10); // 从10开始
</script>

Composables的优势何在?

  1. 逻辑清晰:所有相关的状态和方法都聚集在一起,代码更易于理解和维护。
  2. 无命名冲突:得益于解构赋值,返回的变量名可以随意重命名,彻底告别mixins的隐式冲突。
  3. 类型推导友好:对TypeScript的支持极佳,能提供完美的类型推断。
  4. 灵活组合:你可以在一个组件内组合多个Composables,构建出复杂而清晰的数据流。

拥抱未来

从mixins到Composables,不仅仅是API的升级,更是前端工程思想的一次进化。它鼓励我们将关注点分离,构建出更健壮、更可测试的代码。

是时候在你的下一个Vue 3项目中,尝试一下Composables的魅力了!


这篇文章共计约450字,聚焦于一个具体的前端技术点,并提供了代码示例,符合技术博客的风格。

目录
相关文章
|
12月前
|
前端开发
告别Flexbox?CSS Grid才是布局的终极答案!
告别Flexbox?CSS Grid才是布局的终极答案!
386 113
vue3+vite项目中使用svg图标
vue3+vite项目中使用svg图标
2598 1
正则表达式 - 中文、英文姓名匹配
正则表达式 - 中文、英文姓名匹配
4560 0
|
12月前
|
前端开发 JavaScript API
什么是 Headless UI?
什么是 Headless UI?
983 115
|
安全 Java API
Eclipse 打开marketplace 报PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
网上有很多解决的帖子,我这里只是记录一下方便自己查阅 主要原因是java本身需要证书 1、按导入安全证书的方法解决
2056 0
Eclipse 打开marketplace 报PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
|
12月前
|
前端开发 UED
按钮的呼吸感:你的用户为何停留?
按钮的呼吸感:你的用户为何停留?
395 118
|
12月前
|
缓存 前端开发 UED
告别useEffect滥用:用“SWR”模式优雅管理异步状态
告别useEffect滥用:用“SWR”模式优雅管理异步状态
465 117
|
7月前
|
前端开发 小程序 JavaScript
前端组件库——WeUI知识点大全(一)
教程来源 http://lemci.cn/ WeUI是微信官方推出的轻量级CSS样式库,专为微信生态Web应用设计,确保网页界面与微信原生体验高度一致。支持CDN、npm及小程序多种集成方式,兼顾一致性、移动优先与可扩展性,是公众号、H5等开发的必备UI方案。
|
10月前
|
运维 JavaScript 前端开发
Teek Design Vue3 Element Plus 中后台系统开发模板
Teek Design Vue3 是基于 Vue3 + TypeScript + Vite + Element Plus 的中后台系统开发模板,支持多布局、RBAC权限、主题切换与丰富组件,集成 ECharts、富文本等常用能力,开箱即用,适合企业后台、数据看板等场景。MIT 开源协议,配备完整工程化规范与多环境部署方案。
1196 2
Teek Design Vue3 Element Plus 中后台系统开发模板
|
10月前
|
人工智能 运维 API
火爆全网的Skill自己怎么做?老金来教你!(含避坑指南)
本文深度解析Anthropic官方Skills开发指南(anthropics/skills),揭秘“渐进式展示”三层架构:100词元数据决定触发、5000词主体承载核心逻辑、资源按需加载。老金亲测踩坑,提炼6步实操流程与避坑公式,助你零基础打造高效、可维护的专业Skill。(239字)
13640 4