告别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字,聚焦于一个具体的前端技术点,并提供了代码示例,符合技术博客的风格。

目录
相关文章
|
11月前
|
前端开发
告别Flexbox?CSS Grid才是布局的终极答案!
告别Flexbox?CSS Grid才是布局的终极答案!
358 113
vue3+vite项目中使用svg图标
vue3+vite项目中使用svg图标
2569 1
|
机器学习/深度学习 数据建模 数据挖掘
数据建模是什么意思?如何进行数据建模?
数据建模是什么意思?如何进行数据建模?
1276 2
|
数据可视化 JavaScript 前端开发
Turf.js介绍
Turf.js介绍
2032 0
正则表达式 - 中文、英文姓名匹配
正则表达式 - 中文、英文姓名匹配
4502 0
|
11月前
|
前端开发 JavaScript API
什么是 Headless UI?
什么是 Headless UI?
915 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、按导入安全证书的方法解决
2027 0
Eclipse 打开marketplace 报PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
|
11月前
|
前端开发 UED
按钮的呼吸感:你的用户为何停留?
按钮的呼吸感:你的用户为何停留?
377 118
|
11月前
|
缓存 前端开发 UED
告别useEffect滥用:用“SWR”模式优雅管理异步状态
告别useEffect滥用:用“SWR”模式优雅管理异步状态
436 117
|
自然语言处理 JavaScript 前端开发
如何解决前端多语言选型和实现难题?
多语言(i18n)支持 是企业项目走向国际化的必经之路,也是前端工程师最佳实践的内容之一。不过,多语言框架众多,会带来一系列选型问题,相信大家在平时对项目进行多语言支持时,也往往会遇到如下几个问题:
1703 0