iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3 Hooks 模块化抽离示例详解
  • 420
分享到

Vue3 Hooks 模块化抽离示例详解

2024-04-02 19:04:59 420人浏览 薄情痞子
摘要

目录正文todoList demo目录结构TodoList.Vue代码如下定义的类型文件逻辑抽离正文 vue3中的Hooks 其实就是业务逻辑的抽离,跟Vue2中mixin 本质上是

正文

vue3中的Hooks 其实就是业务逻辑的抽离,跟Vue2mixin 本质上是一样的:将当前组件的业务逻辑抽离到一个公共的文件中,提高逻辑复用性,让当前组件看起来更加清爽,不太一样的地方是我们封装hooks 的时候一般是返回一个函数。

todoList demo

先来看一个简单的例子:todoList demo。

新建一个Vue3+Ts的项目npm init vite@latest 项目名称:vue3-hooks, 使用TS,然后cd vue3-hooks -> npm install -> npm run dev 然后删除不必要的内容,新建一个type 文件夹存放所有的类型,新建一个TodoList.vue编写我们的业务和视图代码:

目录结构

TodoList.vue代码如下

<template>
  <h1>To do List</h1>
  添加一条记录: <input type="text" v-model="data.toADDData.title" />
  <button @click="onAdd">添加</button>
  <br />
  <br />
  <table>
    <thead>
      <tr>
        <td>id</td>
        <td>名称</td>
        <td>是否完成</td>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data.list" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.title }}</td>
        <td>{{ item.isFinished }}</td>
      </tr>
    </tbody>
  </table>
</template>
<script setup lang="ts">
import { Reactive } from "vue";
import { IntTodoList } from "../type/todoList";
type DataType = {
  list: IntTodoList[];
  toAddData: IntTodoList;
};
const data = reactive<DataType>({
  list: [],
  toAddData: {
    id: 0,
    title: "",
    isFinished: false,
  },
});
const onAdd = () => {
  data.list.push({ ...data.toAddData, id: data.list.length + 1 });
};
</script>

定义的类型文件

interface IntTodoList {
  id: number;
  title: string;
  isFinished: boolean;
}
export type { IntTodoList };

逻辑抽离

 

  • 新建一个hooks 文件夹,在hooks 文件夹中新建一个todoList.ts 文件,将TodoList.vue 中的data 数据 和onAdd 方法 抽离到hooks文件中,并导出:
import { reactive } from "vue";
import { IntTodoList } from "../../type/todoList";
export default () => {
  type DataType = {
    list: IntTodoList[];
    toAddData: IntTodoList;
  };
  const data = reactive<DataType>({
    list: [],
    toAddData: {
      id: 0,
      title: "",
      isFinished: false,
    },
  });
  const onAdd = () => {
    data.list.push({ ...data.toAddData, id: data.list.length + 1 });
  };
  return { data, onAdd}
};

TodoList.vue 中导入:

<template>
  <h1>To do List</h1>
  添加一条记录: <input type="text" v-model="data.toAddData.title" />
  <button @click="onAdd">添加</button>
  <br />
  <br />
  <table>
    <thead>
      <tr>
        <td>id</td>
        <td>名称</td>
        <td>是否完成</td>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data.list" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.title }}</td>
        <td>{{ item.isFinished }}</td>
      </tr>
    </tbody>
  </table>
</template>
<script setup lang="ts">
import TodoListHooks from './hooks/todoList'
const {data, onAdd} = TodoListHooks()
</script>

如果其他组件需要data 数据 和 onAdd 方法,也可以导入hooks 文件使用,而且现在再来看TodoList.vue 文件看上去是不是非常清爽。 功能跟未抽离前是一样的:

完整代码

以上就是Vue3 Hooks 模块化抽离示例详解的详细内容,更多关于Vue3 Hooks 模块化抽离的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue3 Hooks 模块化抽离示例详解

本文链接: https://www.lsjlt.com/news/167904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3 Hooks 模块化抽离示例详解
    目录正文todoList demo目录结构TodoList.vue代码如下定义的类型文件逻辑抽离正文 Vue3中的Hooks 其实就是业务逻辑的抽离,跟Vue2中mixin 本质上是...
    99+
    2024-04-02
  • vue3-HOOKS模块化处理方式
    目录vue3模块化处理vue hooks理解与使用demo源码示意vue3模块化处理 vue3版本的更新,就是能搞更好的重用机制,可以把想要得模块独立出去 eg:显示一个当前时间的工...
    99+
    2024-04-02
  • vite vue3 规范化与Git Hooks详解
    目录1 规范化2 git 提交规范2.1 Angular 规范2.2 Commitizen3 git hooks3.1 什么是 git hooks3.2 commitlint 和 h...
    99+
    2022-11-13
    vue3 Git Hooks git 规范 vite vue3
  • vue3封装自定义v-model的hooks示例详解
    目录前言基础基本的v-model多个v-model绑定v-model修饰符进阶问题背景方式一:通过watch中转方式二:computed的get和set终极:封装v-model的ho...
    99+
    2024-04-02
  • Python中ConfigParser模块示例详解
    目录1. 简介2. ini配置文件格式3. 读取ini文件3.1 初始化对象并读取文件3.2 获取并打印所有节点名称3.3 获取指定节点的所有key3.4 获取指定节点的键值对3.5...
    99+
    2023-01-15
    Python中ConfigParser模块 Python中ConfigParser
  • Python中String模块示例详解
    目录Python中String模块详解一、 字符串常量二、 类1、 格式化1.1 介绍1.2 简单应用1.3 格式化输出2、 模板化三、 函数Python中String模块详解 一、...
    99+
    2022-12-24
    Python中String模块 Python String模块
  • CommonsChunkPlugin抽取公共模块的示例分析
    小编给大家分享一下CommonsChunkPlugin抽取公共模块的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!引言webpack插件CommonsChunkPlugin的主要作...
    99+
    2024-04-02
  • Python学习之模块化程序设计示例详解
    目录关于模块化程序设计水果仓库功能简介主功能实现与程序入口实现添加功能实现列出所有信息功能实现查询信息功能实现删除信息功能完整程序如下关于模块化程序设计 什么是模块化程序设计? 程序...
    99+
    2024-04-02
  • Pythondecimal模块的使用示例详解
    目录Python decimal 模块getcontext函数setcontext函数localcontext函数Python decimal 模块 Python中的浮点数默认精度是...
    99+
    2023-03-11
    Python decimal使用 Python decimal
  • Hooks封装与使用示例详解
    目录Hooks是什么?Hooks解决了什么?HOC与HOOK对比分别使用React与Vue3两种框架封装useThrottle钩子函数总结Hooks是什么? 本篇文章主要介绍Hook...
    99+
    2023-01-04
    Hooks封装使用 Hooks封装
  • 详解NodeJS模块化
    目录一、前言二、正文2.1、什么是模块2.2、Resolving2.3、require.resolve2.4、模块间的父子依赖关系2.5、exports, module.export...
    99+
    2024-04-02
  • JavaScript 模块化详解
    目录前言:1.概念2.模块化的好处3.引入多个script标签后出现的问题一、CommonJS二、AMD三、CMD四、ES6模块化前言: 1.概念 将一个复杂的程序依据一...
    99+
    2024-04-02
  • python常用的时间模块之datetime模块示例详解
    目录一、基本类型1、date类2、time类3、datetime类4、timedelta类二、date类1、返回date对象2、对date对象的操作:三、time类四、datetim...
    99+
    2023-05-20
    python datetime模块 python时间模块
  • 解决jest处理es模块示例详解
    目录问题场景解决方法问题场景 项目使用jest进行测试时, 当引入外部库是es模块时, jest无法处理导致报错. Test suite failed to run ...
    99+
    2023-02-06
    解决jest处理es模块 jest处理es模块
  • gulp模块使用方法示例详解
    目录正文使用gulp.task 建立任务任务的名称任务的回调函数html任务html文件中的代码压缩操作抽取html文件的公共代码css任务less语法转换抽取html文件中的公共代...
    99+
    2024-04-02
  • JavaScript模块化的示例分析
    小编给大家分享一下JavaScript模块化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 浏览器支持使用JavaScript 模块依赖于 impo...
    99+
    2023-06-15
  • FlutterDrawer抽屉菜单示例详解
    本文实例为大家分享了Flutter Drawer抽屉菜单示例代码,供大家参考,具体内容如下 一.Flutter Drawer组件简介 1.源码查看 const Drawer({   ...
    99+
    2024-04-02
  • Python模块glob函数示例详解教程
    目录本文大纲支持4个常用的通配符1)glob()函数2)iglob()函数3)escape()函数总结本文大纲 glob模块也是Python标准库中一个重要的模块,主要用来查找符合特...
    99+
    2024-04-02
  • vuex与模块化的示例分析
    这篇文章将为大家详细讲解有关vuex与模块化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例教程例子是在vue-cli基础上构建的,以下是src文件下的内容目...
    99+
    2024-04-02
  • 详解python代码模块化
    一、概念 1、模块化代码可以使代码易于维护和调试,并且提高代码的重用性; 2、函数可以用来减少冗余的代码并提高代码的可重用性。函数也可以用来模块化代码并提高程序的质量; 3、在pyt...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作