首页 > 其他分享 >Vue3 自定义Hooks大全:一站式解决你的疑惑!

Vue3 自定义Hooks大全:一站式解决你的疑惑!

时间:2024-01-04 16:31:58浏览次数:28  
标签:组合式 自定义 Hooks Vue3 复用 API hooks 组件

前言

不知道喜欢 vue3 的小伙伴和我是不是一样,刚上手vue3 的时候 对自定义hooks 一脸懵逼,在一些视频网站学习的时候老师讲解到自定义hooks 最喜欢用 加减乘除来描述 自定义hooks 是咋用的,可能是我理解能力比较差吧,我看了这个 加减乘除的自定义hooks 之后感觉跟没看一样,还是一脸懵逼,所以个人觉得这种知识还是结合项目或者业务来说才是比较能让人理解的。

但是平时开发的过程中却好像也不怎么需要自定义hooks ,那我们到底需不需要自定义hooks,又该如何学习自定义hooks 呢,首先先在这跟你说结论:自定义hooks 不是必须的 他只是为我们提供一种 逻辑复用 的方式,但是他有利于你复用逻辑 代码更简洁,那如何学?学习别人的思想啊!然后自己融汇贯通即可。

介绍

其实我们平常说的 自定义hooks 在vue3 官方说法叫组合式 API (Composition API)

  • 组合式 API (Composition API) 是一系列 API 的集合,使我们可以使用函数而不是声明选项的方式书写 Vue 组件
  • 虽然这套 API 的风格是基于函数的组合,但组合式 API 并不是函数式编程。组合式 API 是以 Vue 中数据可变的、细粒度的响应性系统为基础的,而函数式编程通常强调数据不可
  • 组合式 API 最基本的优势是它使我们能够通过组合函数来实现更加简洁高效的逻辑复用。在选项式 API 中我们主要的逻辑复用机制是 mixins,而组合式 API 解决了 mixins 的所有缺陷

使用

平时我们 写自定义hooks 可能有两种

  • 一种是 基于业务的 自定义hooks 只是为了单纯提取 可复用的逻辑 ,缺点是只能用在自己项目中
  • 一种是 可复用行强的 可在全局使用的 比如对于弹框、表格、表单等等的自定义hooks

基于业务封装的 hooks

最近我在开发低代码的项目 我在项目中得封装一套组件 看下面的伪代码:

输入框

Vue3 自定义Hooks大全:一站式解决你的疑惑!_自定义

下拉框

Vue3 自定义Hooks大全:一站式解决你的疑惑!_免费源码_02

开关:

Vue3 自定义Hooks大全:一站式解决你的疑惑!_vue3_03

大家可以看到 每个组件都有个共性,有个配置项 status 如果值为 disabled 的时候 会被赋值到组件上 要是有很多组件 我们都得复制一下这个代码 那就比较恶心了,这个时候我们就可以用自定义hooks 去封装这个属性:

Vue3 自定义Hooks大全:一站式解决你的疑惑!_API_04

我们组件就可以 通过 hooks 去引入这个属性了 这样 每个组件也只要引入这个hooks 就行

Vue3 自定义Hooks大全:一站式解决你的疑惑!_自定义_05

复用性强的自定义hooks:

1) 更改网站title

大家有没有遇到过这种业务 就是每个页面进入之后都有他自己对应的 title 你都得去改 如果没有的话 那他就是 之前的title 不用改 所以你就可能在每个页面写出 类似以下的代码:

Vue3 自定义Hooks大全:一站式解决你的疑惑!_自定义_06

但是你要是用了 封装之后的 hooks 之后

Vue3 自定义Hooks大全:一站式解决你的疑惑!_免费源码_07

你只需要把这个hooks 引入 只写一句代码 就行

const setTitle = useTitle('测试')
2) 大家写后台管理的 时候是不是大多场景都是 对于表格的增删改查 ,对于分页的操作每个页面其实都是一样的,这个时候我们就可以把他封装起来

Vue3 自定义Hooks大全:一站式解决你的疑惑!_自定义_08

这个hooks 发给任何人 他们都能用到自己的项目中 这个就是复用性强的 不像我们上一类 只能针对于我们自己项目用

完整附件:点此下载


标签:组合式,自定义,Hooks,Vue3,复用,API,hooks,组件
From: https://blog.51cto.com/u_15723831/9102506

相关文章

  • SpringCloud微服务实战——搭建企业级开发框架(三十一):自定义MybatisPlus代码生成器实现
      理想的情况下,代码生成可以节省很多重复且没有技术含量的工作量,并且代码生成可以按照统一的代码规范和格式来生成代码,给日常的代码开发提供很大的帮助。但是,代码生成也有其局限性,当牵涉到复杂的业务逻辑时,简单的代码生成功能无法解决。  目前市面上的代码生成器层出不穷,大多......
  • vue3 setup函数之数据
    setup中定义方法:exportdefault{name:'App',setup(){//定义方法functionedit(){}return{//方法与数据,必须要返回出去,不然不起作用。edit}}} setup中ref函数定义基本数据类型与对象数据类型:1.ref函数定义基......
  • 初识Sringboot3+vue3环境准备
    环境准备后端环境准备下载JDK17https://www.oracle.com/java/technologies/downloads/#jdk17-windows   安装就下一步下一步,选择安装路径 配置环境 环境JDK17+、IDEA2021+、maven3.5+、vscode后端基础:javaSE,javaWeb、JDBC、SMM框架(Spring+SpringMVC+MyBatis)、MyBatis-Plus前......
  • Logstash自定义正则表达式ETL实战
    0、题记本文建立在干货|LogstashGrok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。有时Logstash没有我们需要的模式。幸运的是,我们有正则表达式库:Oniguruma。Oniguruma是一个灵活的正则表达式库。 它包含多种语言的不同正则表达式实现的特性。Github地址:https://......
  • VUE3 + Three.js 坑
    VUE3+Three.js坑1.问题描述将scene、camera、renderer、controls等变量用reactive变成响应式时,页面渲染会报错:three.module.js?5a89:24471UncaughtTypeError:'get'onproxy:property'modelViewMatrix'isaread-onlyandnon-configurabledatapropertyontheprox......
  • [Android] 如何把自定义的 可执行文件/库文件/apk 放到系统目录下
    找到源码目录device/......./<devicename>/<devicename>.mk,以waydroid为例:/device/waydroid/waydroid/waydroid_arm64打开如下文件: lineage_waydroid_arm64.mk添加PRODUCT_PACKAGES变量到上述文件中,比如:PRODUCT_PACKAGES+=可执行文件名/动态库名字/静态库文件名字/apk文件名......
  • EasyCVR自定义协议添加步骤
    有用户在使用EasyCVR平台时,想添加自身的自定义协议,不知如何操作。收到用户请求后,技术人员立即对用户进行反馈,以下为具体步骤:1、首先在添加设备中选择GM设备,并把项目id、身份标识和秘钥传入添加设备的接口中;2、随后再找到添加设备的接口,并写个GM协议接入,来判断上面三个参数是否为空;3......
  • 【C++】STL 容器 - set 集合容器 ⑤ ( 仿函数 functor 简介 | 仿函数 functor 调用 |
    文章目录一、仿函数functor1、仿函数functor简介2、仿函数functor调用3、代码示例-仿函数functor调用二、为自定义类元素设置排序规则-仿函数functor1、自定义类排序规则2、仿函数-实现自定义类排序规则3、重载<运算符函数-实现自定义类排序规则一、仿函数fu......
  • 【C++】STL 容器 - set 集合容器 ④ ( 设置 set 集合容器的排序规则 | 默认的 set 集
    文章目录一、设置set集合容器的排序规则1、默认的set集合容器-从小到大排列2、设置set集合容器从大到小排列二、使用仿函数自定义set集合容器排序规则1、仿函数概念2、使用仿函数实现set集合容器排序规则一、设置set集合容器的排序规则1、默认的set集合容器-......
  • 跳转链接 下载链接 自定义处理 XMLHttpRequest 对象来发起 HTTP 请求
    import{saveAs}from'file-saver';/***@description:JavaScript动态生成的a标签进行下载,*********可以使用XMLHttpRequest对象来发起HTTP请求,并在请求完成后获取响应数据*@param{*}url请求地址*@param{*}isOpenNew是否打开新标签页*......