首页 > 其他分享 >Vue3之Composables

Vue3之Composables

时间:2024-03-18 10:12:08浏览次数:19  
标签:function 状态 组合 Composables counter Vue3 组件 ref

前言

Composables 称之为可组合项,熟悉 react 的同学喜欢称之为 hooks ,由于可组合项的存在,Vue3 中的组件之间共享状态比以往任何时候都更容易。这种新范例引入了一种更有组织性和可扩展性的方式来管理整个应用程序的状态和逻辑。

什么是Composables

本质上,可组合项是一种模式而不是特定的功能。它是通过一个简单的函数来实现的,该函数可以保存状态和可重用的代码。总的来说:可组合项是可重用的有状态函数。它们可用于在组件之间共享响应式状态和逻辑。

如何定义

下面通过一段代码看看什么是可组合项:

import { ref } from 'vue';

// 定义可组合项需以use开头 比如 useXXX
export function useCounter(initialValue = 0) {
// 可组合项都有自己的生命周期 你完全可以使用Composition API
const counter = ref(initialValue);

function increment() {
counter.value++;
}

function decrement() {
counter.value--;
}

function reset() {
counter.value = initialValue;
}
// 返回其他组件需要访问的所有内容。
return { counter, increment, decrement, reset };
}

我们将 counter 声明为响应式状态以及三个操作它的函数,请注意,可组合项必须返回其他组件可以访问的所有内容。

如何使用

从组件方面,我们可以像这样导入和初始化可组合项:

<template>
<div>
<h3>Counter Value: {{ counter }}</h3>
<button @click="increment">Increment</button>
<button @click="decrement">Decrement</button>
<button @click="reset">Reset</button>
</div>
</template>

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

const { counter, increment, decrement, reset } = useCounter();
</script>

使用可组合项进行共享状态

在某些情况下,需要实例之间共享状态,我们知道 Vue3 中组件通信方式有很多种比如 props,emits,provide甚至一些状态管理库比如 pinia。其实可组合项也可以达到同样的目的,可以通过在可组合函数外部声明状态来实现:

import { ref } from 'vue';

// 外部进行声明状态
const sharedState = ref();

export function useComposable() {
// 内部声明状态每次都会初始化
const localState = ref();

return { sharedState, localState };
}

这种方法展示了可组合性的灵活性,让我们能够以对每个实例单独或在它们之间共享的方式管理状态。

总结

总而言之,可组合性通过提供自然且易于理解的简单性和模块化性,真正重新定义了 Vue3。它们可用于从组件中抽象出复杂性,还可在组件之间共享状态。强烈推荐大家运用起来。

标签:function,状态,组合,Composables,counter,Vue3,组件,ref
From: https://www.cnblogs.com/alwn/p/18079757

相关文章

  • vue3+ts+vant写移动端项目部Android机页面打开空白
    前言部分安卓机因为内置webview较老,所以无法识别最新的es6的语法,页面打开空白。解决方式,vite项目就使用@vitejs/plugin-legacy,其他项目可以选择使用@babel/core@babel/cli@babel/preset-env这里主要提vite项目,因为babel项目的相关博客较多,就不再复述。 vite.config......
  • Vue — Vue3.0快速掌握
    一.使用create-vue创建项目1.环境条件node版本在16.0以上2.创建vue3.0应用npminitvue@latest//创建npminstall//下载依赖3.项目目录和关键文件1.vite.config.js:项目的配置文件基于vite的配置2.package.接送:项目包文件核心依赖变成了Vue3.X和vite3.main.js:入......
  • 【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文
    全套笔记资料代码移步:前往gitee仓库查看感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~全套教程部分目录:部分文件图片:认识Vue31.Vue3组合式API体验通过Counter案例体验Vue3新引入的组合式API<script>exportdefault{data(){return{count:0......
  • Vue3 组件通信方式小结
    也是零零散散用vue3来搞一些前端的页面,每次在组件通信,主要是传数据这块总是忘记,大多无非父传子,子传父等情况,这里再来做一个小结.父传子Props最常见的就是父组件给子组件传递数据,不论是传字符串也好,还是数组,对象,函数等,都可以通过属性传值的方式,子组件......
  • Vue3学习日记 Day1
    一、简介1、简介  Vue3是新的默认版本,拥有更快的速度,更好的语法二、使用create-vue搭建Vue3项目1、创建项目1、介绍  create-vue是Vue官方新的脚手架工具,底层切换为了vite,为开发提供极速响应2、使用  2.1、确定环境条件    2.1.1已安装16.0或......
  • 第一个Vue3程序
     上一个作品是Vue2的代码,这个是Vue3,引入时候不一样<!DOCTYPEhtml><html><head><title>Vue.js示例</title><!--引入Vue.js--><scriptsrc="https://unpkg.com/vue@3/dist/vue.global.js"></script></head>......
  • Vue3-03_组件基础_上
    单页面应用程序什么是单页面应用程序单页面应用程序(英文名:SinglePageApplication)简称SPA,顾名思义,指的是一个Web网站中只有唯一的一个HTML页面,所有的功能与交互都在这唯一的一个页面内完成。单页面应用程序的特点单页面应用程序将所有的功能局限于一个web页面中,仅在......
  • vue3+ts 上传组件
    本来是用的jeecg-vue3中的上传组件,如下图: 功能上还是蛮全的,就是上图中这个链接的代码死活找不到,查了下,是基于antv的a-upload实现的。但是antv中也没找到,上图这个只有移入删除的功能但是我这边的需求是点击链接可以直接在网页预览,而不是下载,移入后有个删除和下载的功能按钮。......
  • vite中配置less,vue3中配置less
    前言如果赶时间请直接使用目录跳到解决问题的部分。使用的项目使用vue脚手架生成。npminitvue@latest版本如下"@vitejs/plugin-vue":"^5.0.4","vue":"^3.4.21"由于近期在学less,心想如果不能将其应用到vue项目中,无异于纸上谈兵。于是立即用vue脚手架......
  • vue3+element plus表格实现单选功能
    现有一个需求,表格单选带radio的效果,目前UI库还不支持。只能自行实现:贴下效果图: 用到vue3+elementplus:关键代码:<!--表格--><el-tableref="refsTable"@row-click="clickRow":data="tableData"height="260px"highlight-current-row><el......