vue3 hooks的简单使用 组合式函数

2023-11-11

想当于vue2的mixins,我们可以使用hooks代替mixins。
官方文档 组合式函数
hooks 特点

  • vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入,不同在于 hooks 是函数。
  • vue3 中的 hooks 函数可以提高代码的复用性,能够在不同的组件当中都利用 hooks 函数。
  • hooks 函数可以与 mixin 连用,但是不建议。

把一些公共的代码封装到一个文件中,减少代码的重复性;

写法1:

import { reactive } from 'vue'

export default function () {  // 导出一个默认方法

  // 创建一个对象,保存宽度和高度值
  const screen = reactive({
    width: 0,
    height: 0
  })

  // 创建一个方法,获取可视化界面的宽度和高度值
  const getWH = () => {
    ...
  }

  return { screen, getWH }  // 方法返回宽高值
}

使用

  // 导入 hooks 
  import screenWH from '../hooks/useScreenWh.ts'

  // 因为 screenWH 是一个导出的方法,所以需要调用一下子,然后顺便解构一下就可以在模板使用了。
  let { screen, getWH } = screenWH()

写法2: 【推荐】

export const useHandleDelete = () => {
  const { emit } = getCurrentInstance()!;

  const handleDelete = (url: string, method: string = 'delete', params?: any) => {
    return new Promise((resolve, reject) => {
      ElMessageBox.confirm('是否确认删除?', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        center: true,
        showClose: false
      })
        .then(async () => {
          await Pepper[method](url, params);
          resolve(
            ElMessage.success({
              message: '删除成功!'
            })
          );
          emit('handleUpdate');
        })
        .catch(() => {
          reject(
            ElMessage.info({
              message: '已取消删除'
            })
          );
        });
    });
  };

  return handleDelete;
};

使用

import { useHandleDelete } from '@/hooks/useHandleDelete';


const handleDelete = useHandleDelete();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3 hooks的简单使用 组合式函数 的相关文章

  • vue3 父子组件传参详解

    前言 我引用了大佬的文章 但我实在找不到网址链接了 我记录在笔记上的 如果大佬看见了 麻烦给我说一下 我注明一下出处 建议先看son vue 里面写了那三种方式 首先放一个我的demo defineProps什么的父子传参api不用引入 直
  • vue.js -- 事件绑定

    目录 绑定事件 定义事件 直接写表达式 获取事件对象event 获取自定义参数 获取参数和事件对象event 事件绑定多个函数 修饰符 事件修饰符 按键修饰符 鼠标修饰符 精确修饰符 绑定事件 定义事件 代码演示
  • Vue3之watch和watchEffect实战总结

    watch和watchEffect都是vue3中的监听器 但是在写法和使用上是有区别的 主要是介绍一下watch和watchEffect的使用方法以及他们之间的区别 watch 的工作原理 侦听特定的数据源 并在回调函数中执行副作用 它默认
  • vue3 hooks的简单使用 组合式函数

    想当于vue2的mixins 我们可以使用hooks代替mixins 官方文档 组合式函数 hooks 特点 vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入 不同在于 hooks 是函数 vue3 中的 hook
  • vue3 + vite 在线预览docx, pdf, pptx(内外网)并实现移动端适配

    一 内网 1 docx 使用docx preview 安装插件 npm i docx preview S 引入依赖 docx import renderAsync from docx preview let docx import meta
  • Property xxx was accessed during render but is not defined on instance

    vue3 x版本在结合element plus使用如果使用了表单元素以及v model指令会在控制台看到类似的警告 虽然不影响js运行 但是对于强迫症玩家难受的不行 下面我们来看一下这个问题是如何产生的 应该怎么解决 原因 vue3 x版本
  • vue3+vite的项目中实现右键事件的神器

    前言 vue3 vite的项目中实现右键事件的神器 imengyu vue3 context menu 实现效果 使用步骤 1 安装 npm cnpm pnpm yarn 都可以 装上下面插件 imengyu vue3 context me
  • vue新一代的状态管理器之pinia

    Pinia 简介 Pinia 是 Vue 新一代的轻量级状态管理库 相当于 Vuex 也是 Vue 核心团队推荐的状态管理库 同时支持 Vue2 和 Vue3 未来很有可能替代 Vuex 比 Vuex 更容易上手 特性 Pinia 具有以下
  • vue3 的 ref、 toRef 、 toRefs

    1 ref 对原始数据进行拷贝 当修改 ref 响应式数据的时候 模版中引用 ref 响应式数据的视图处会发生改变 但原始数据不会发生改变
  • Vue3+Vite项目配置Eslint+Prettier+Husky+Lint-Staged+Commitlint

    Eslint 配置 ESLint 是一个插件化并且可配置的 JavaScript 语法规则和代码风格的检查工具 ESLint 能够帮你轻松写出高质量的 JavaScript 代码 1 建议 vscode 安装 Eslint 的插件 这个插件
  • Vue3 自定义指令

    在前端项目中 有很多需求是需要在多页面进行逻辑处理 通常我们所需要的功能可以通过DOM操作来实现 或者多处功能一致 我们就可以使用自定义指令 在vue2中的自定义指令指令注册的方法是 v focus js import vue from v
  • Vue3全网最细介绍使用

    文章目录 一 Vue3介绍 二 Vue3项目创建 三 Setup 四 ref与reactive 五 setup context 六 计算属性 七 监听属性 八 Vue3生命周期 九 自定义hook函数 十 toRef 一 Vue3介绍 1
  • vue3 父子组件传参

    父向子传参 父组件
  • Vue3 -- teleport传送门

    目录 teleport传送门 例 蒙层特效 目标效果 代码演示 页面效果 未使用teleport存在的问题 使用teleport实现目标效果 完整代码 总结 teleport传送门 Teleport 是一种能够移动 DOM到Vue根节点之外
  • vue3配置eslint 出现问题

    vue3配置eslint 出现问题 标题必须使用导入来加载 ES 模块 ESlint Error Must use import to load ES Module 加上这一行即可
  • Vue3 从入门到放弃 (第二篇.创建第一个Web应用)

    上一篇讲到了 Vue3的一些前期准备和环境配置 Vue3 从入门到放弃 第一篇 环境准备 Meta Qing的博客 CSDN博客 今天我们来讲讲 项目结构以及各个文件介绍 并且创建我们第一个WEB应用 我们继续上一篇 创建完工程结构 目录介
  • vue3知识点:Suspense组件

    文章目录 五 新的组件 3 Suspense 案例 完整代码 本人其他相关文章链接 五 新的组件 3 Suspense 等待异步组件时渲染一些额外内容 让应用有更好的用户体验 使用步骤 第1步 异步引入组件 import defineAsy
  • vue3中实现el-dialog弹窗

    vue3中的父子组件传递依然和vue2中的一样使用props和emit 但是写法略有不同 emit 自定义事件 子传父 props 父传子 父组件中
  • vue3学习笔记(1)script引入vue3实现简单应用

    Vue3专栏入口 目录 一 脚本引入简单使用 二 双向绑定的基本表现 一 脚本引入简单使用 script引入 简单使用实现数据渲染 div h1 counter num h1 div
  • 【vue3练习 -12】vue3使用readonly(),shallowReadonly()

    作用 把一个响应式 可以是ref定义的 也可以是reactive定义的 的数据变成只读的 不可以修改 使用场景 假如你的组件有个数据 但是你不希望在使用的时候修改他就可以把他变成只读的 用法示例 import readonly shallo

随机推荐

  • Github上堪称最全的面试题库(Java岗)到底有多香

    前言 最近金三银四想必大家或多或少都有去面试 面试前也都会有刷刷题的习惯 不过网上有太多的Java面试题库了 大部分都潦潦草草 没有知识储备的小伙伴一般很难看下去 看完后也不会留下印象 最近也是有粉丝私信我说求一份 图文并茂 易于理解 代码
  • linux终端基本操作命令

    Linux系统一切皆为文件 所有命令都是小写 使用命令的格式 命令名 操作内容 1 man 其他命令名 命令介绍 主要看name部分 2 ls ls 文件夹名或者说路径 列出指定路径下的内容 ls a 列出当前目录下所有内容 包括点开头的和
  • QModbusServer

    目录 数据 1 setData 重载一 重载二 2 writeData 3 Data 重载一 重载二 4 readData 数据 1 setData 重载一 将数据写入Modbus服务器 Modbus服务器有四个表 A表 每个表有一个唯一的
  • 5G/NR 学习笔记: 波束赋形 / beam 管理

    What beam 是对于整列天线电磁波传播的一种样式 一个天线的时候 电磁波的辐射方向是360度传播的 但是一个天线阵列可以实现电磁波单方向传播 天线个数越多 电磁波传播方向越集中 https www rcrwireless com 20
  • 微服务:gateway的使用,和解决跨域问题,用户认证与网关整合

    1 网关介绍 API网关出现的原因是微服务架构的出现 不同的微服务一般会有不同的网络地址 而外部客户端可能需要调用多个服务的接口才能完成一个业务需求 如果让客户端直接与各个微服务通信 会有以下的问题 1 客户端会多次请求不同的微服务 增加了
  • JDK、JRE、JVM三者之间的关系

    jdk java development kit java开发工具包 jre java runtime environment java运行时环境 jvm java virtual machine java虚拟机 jdk环境配置 jdk环境
  • MAPREDUCE的JOB提交流程

    在hadoop1 0版本以前我们的Mapreduce是被当作资源调度和计算框架来使用的 成为了hadoop运行生态圈的瓶颈 所以在hadoop2 0版本以上引入了yarn的概念 使Mapreduce完全成为分布式计算框架 而Yarn成为了分
  • jquery ajax url中有中文,后端乱码的解决方法.txt

    参考 https zhidao baidu com question 2057437468670456147 html url类似 http localhost 8080 floorsNodes 风管 json 方法 在jquery aja
  • HTML标签的分类

    HTML的标签 一 分类 1 排版标签 2 标题标签 3 段落标签 4 水平线标签 5 换行标签 6 文本格式标签 7 标签属性 8 图像标签 二 应用 1 排版标签 与css搭配使用 显示网页结构的标签 是网页布局中的常用标签 2 标题标
  • 验证码拦不住机器人了!谷歌AI已能精准识别模糊文字,GPT-4则装瞎求人帮忙

    丰色 发自 凹非寺量子位 公众号 QbitAI 最烦登网站时各种奇奇怪怪 甚至变态 的验证码了 现在 有一个好消息和一个坏消息 好消息就是 AI可以帮你代劳这件事了 不信你瞧 以下是三张识别难度依次递增的真实案例 而这些是一个名为 Pix2
  • 华退学博士王垠:离开是为了获得力量后再回来

    清华退学博士王垠 离开是为了获得力量后再回来 附万言退学书 只提供一种模具生产 标准化的人 而忽视 教育的多样性 的中国教育界是可悲的 异端王垠用现身说法打破了教育界 沉默的螺旋 文 张洋 王垠出名了 这是迟早的事 但这一次 他的出名更多是
  • MySQL LOAD DATA INFILE - 加载没有主键的文件实战

    首先告诉大家关于 MySQL LOAD DATA INFILE 加载没有主键的文件 是可以操作的 接下来就来实战一把 表imagecode结构可以看到有3列 其中id是自增列 drop table imagecode create tabl
  • ztree异步加载

    1 配置好参数 var setting ztreeSetting view showIcon false 前面文件夹显示状态 data key name MC 数据结构的属性由name改成MC async enable true url u
  • 【NVM】node多个版本管理工具安装步骤以及使用

    1 什么是nvm nvm是一个管理nodejs版本的工具 在实际的开发中 有些项目的开发依赖需要不同版本的nodejs运行环境 此时我们就需要使用nvm来管理nodejs版本 2 安装步骤 2 1 下载nvm https github co
  • linux文件赋予用户权限,Linux 给用户赋予操作权限

    chown Rkeesail keesail local赋予local目录给keesailchmod760 local赋予local目录读写权这个目chmod777文件夹名称 可以把文件夹设置成所有用户都有完全的权限 不过更改系统文件夹下的
  • WSL2的安装详细过程(转载)

    这部分记录了如何安装wsl 以及如何升级到wsl2的心酸历程 文章目录 版本要求 升级windows WSL的安装 升级到WSL2 安装linux分发版 排查安装问题 相关链接 记录所踩的坑 版本要求 安装wsl2对系统版本有硬性的要求 运
  • mysql的行转列和列转行

    一 行转列 即将原本同一列下多行的不同内容作为多个字段 输出对应内容 建表语句 DROP TABLE IF EXISTS tb score CREATE TABLE tb score id INT 11 NOT NULL auto incr
  • 语义分割常用数据集整理

    语义分割的数据集分为三类 2D图片 2 5D图片 RGB D 3D图片 每一个类别的数据集都提供了像素级的标签 可以用来评估模型性能 同时其中一部分工作用到了数据增强来增加标签样本的数量 一 2D数据 1 PASCAL Visual Obj
  • 更换 CentOS 7 的下载源为阿里云

    1 备份 mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo backup 2 下载新的CentOS Base repo 到 etc yum repos
  • vue3 hooks的简单使用 组合式函数

    想当于vue2的mixins 我们可以使用hooks代替mixins 官方文档 组合式函数 hooks 特点 vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入 不同在于 hooks 是函数 vue3 中的 hook