iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解Vue如何自定义hooks(组合式)函数
  • 720
分享到

详解Vue如何自定义hooks(组合式)函数

Vue自定义hooks函数Vue自定义hooksVue hooks 2023-03-13 11:03:11 720人浏览 安东尼
摘要

目录自定义hooks点击屏幕记录鼠标位置hooks函数的命名与Mixin的对比与无渲染组件的对比总结在Vue当中,一个非常重要的功能就是组件的复用,编写Vue组件,更多的也是在拼装组

Vue当中,一个非常重要的功能就是组件的复用,编写Vue组件,更多的也是在拼装组件,将页面的各个功能进行模块化

便于维护和管理,而在项目里,有些页面中的组件的逻辑功能是一样的,如果没有进行功能逻辑的复用,那么每个页面都需要重复的写一遍

Vue当中各个组件是保持独立的,如果想要复用页面当中的某个组件的逻辑,也就是复用组件逻辑的代码

那么可以抽离逻辑,放到一个公共的地方管理的,方便在其他地方调用,达到复用代码和逻辑的目的

Vue2当中可以使用mixin,但使用这个有很多缺点,而在vue3中引入了组合式函数,也就是自定义hooks就很好的解决了之前的问题

自定义hooks

解释: 本质上是一个函数,把setup函数中使用的composition api进行了封装,复用有状态逻辑的函数

类似Vue2mixin

优势: 自定义hooks,复用代码,让setup中的逻辑更加清除易懂

点击屏幕记录鼠标位置

现在有一个需求:就是记录用户点击浏览器的位置,显示到浏览器上,在组件中使用组合式API实现点击鼠标跟踪功能,示例代码如下所示

新建一个clickPoint.vue

import { ref,onMounted,onUnmounted } from 'vue';

const x = ref(0);  // 坐标x的值
const y = ref(0);  // 坐标y的值

function update(event) {
    x.value = event.pageX;
    y.value = event.pageY;
}
onMounted(() => {
    
    window.addEventListener('click',update)
    // 对于后面的这个回调处理函数,可以单独的抽离出去

})

// 解绑函数副作用
onUnmounted(() => {
    window.removeEventlistener('click',update);
})

模板代码

<template>鼠标的位置是:{{x}},{{y}}</template>

现在,如果想要在多个组件中复用这个相同的功能逻辑,我们可以把这个逻辑以一个组合式函数的形式提取到外部文件当中的 我们命名这个文件叫usePoint.js

import {ref,onMounted,onUnmounted} from 'vue';

// 按照习惯,约定俗成,组合式函数名以`use`开头
export function usePoint() {
    // 被组合式函数封装和管理的状态
    const x = ref(0);
    const y = ref(y);

    function update(event) {
       x.value = event.pageX;
       y.value = event.pageY;
    }
    onMounted(() => {
      window.addEventListener('click',update)
    })
    // 解绑函数副作用
    onUnmounted(() => {
        window.removeEventlistener('click',update);
    })

    // 通过返回值暴露所有管理的状态
    return {
        x,
        y
    }
}

那它在组件中使用的方式

<script setup>
    import { usePoint } from "./usePoint.js"

    const { x,y} = usePoint();
    // 如果希望以对象属性的形式来使用组合式函数中返回的状态,可以将返回的对象用Reactive()包装一次,这样其中的ref会被自动解包
    const clickPoint = reactive(usePoint());
    // clickPoint.x链接到原来的x ref
    console.log(clickPoint.x,clickPoint.y);
</script>

然后在模板中

<template>
    鼠标的坐标: {{x}},{{y}}
    或
    鼠标的坐标: {{clickPoint.x}},{{clickPoint.y}}
</template>

核心逻辑完全一致,我们做的只是把它移到一个外部函数中去,并返回需要暴露的状态。和在组件中一样,你也可以在组合式函数中使用所有的组合式 API。现在,usePoint() 的功能可以在任何组件中轻易复用了。

可以嵌套多个组合式函数:一个组合式函数可以调用一个或多个其他的组合式函数。这使得我们可以像使用多个组件组合成整个应用一样,用多个较小且逻辑独立的单元来组合形成复杂的逻辑。实际上,这也是将这一设计模式API 集合命名为组合式 API

hooks函数的命名

组合式函数约定用驼峰式命名,并以use作为开头

与Mixin的对比

Vue2可能会对 mixins 选项比较熟悉。它也让我们能够把组件逻辑提取到可复用的单元里。然而 mixins 有三个主要的短板:

[1]. 不清晰的数据来源:当使用了多个 mixin 时,实例上的数据属性来自哪个mixin 变得不清晰,这使追溯实现和理解组件行为变得困难。这也是我们推荐在组合式函数中使用 ref +解构模式的理由:让属性的来源一目了然

[2]. 命名空间冲突:多个来自不同作者的 mixin 可能会注册相同的属性名,造成命名冲突。若使用组合式函数,你可以通过在解构变量时对变量进行重命名来避免相同的键名

[3]. 隐式的跨 mixin交流:多个 mixin 需要依赖共享的属性名来进行相互作用,这使得它们隐性地耦合在一起。而一个组合式函数的返回值可以作为另一个组合式函数的参数被传入,像普通函数那样

Vue 3中不推荐使用 mixin。有时需要查找一个变量,那么需要全局的搜索

与无渲染组件的对比

组合式函数相对于无渲染组件的主要优势是:组合式函数不会产生额外的组件实例开销。当在整个应用中使用时,由无渲染组件产生的额外组件实例会带来无法忽视的性能开销。

我们推荐在纯逻辑复用时使用组合式函数,在需要同时复用逻辑和视图布局时使用无渲染组件

总结

组合式API函数,抽取组合式函数不仅是为了复用,也是为了代码组织,组合式 API 会给予更多的灵活性,让你可以基于逻辑问题将组件代码拆分成更小的函数

进行管理,总之,vue3的自定义hooks函数对复用组件的逻辑代码很实用

到此这篇关于详解Vue如何自定义hooks(组合式)函数的文章就介绍到这了,更多相关Vue自定义hooks函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Vue如何自定义hooks(组合式)函数

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

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

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

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

下载Word文档
猜你喜欢
  • 详解Vue如何自定义hooks(组合式)函数
    目录自定义hooks点击屏幕记录鼠标位置hooks函数的命名与Mixin的对比与无渲染组件的对比总结在Vue当中,一个非常重要的功能就是组件的复用,编写Vue组件,更多的也是在拼装组...
    99+
    2023-03-13
    Vue自定义hooks函数 Vue自定义hooks Vue hooks
  • vue3自定义hooks/可组合函数方式
    目录自定义hooks/可组合函数1.mixins方式的痛点2.传统mixins方式示例3.自定义hooks方式示例vue3(hooks)自定义hooks/可组合函数 vue3 com...
    99+
    2024-04-02
  • Vue怎么自定义hooks函数
    本文小编为大家详细介绍“Vue怎么自定义hooks函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue怎么自定义hooks函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在Vue当中,一个非常重要的功能就...
    99+
    2023-07-05
  • React函数组件useContextuseReducer自定义hooks
    目录一、hooks(useContext)二、hooks(useReducer)三、hooks(useContext搭配useReducer使用)四、自定义hooks一、hooks(...
    99+
    2022-11-13
    React hooks函数组件 React useContext useReducer
  • 详解Vue 自定义hook 函数
    目录定义使用封装发ajax请求的hook函数(ts版本)定义 什么是hook 本质是一个函数,把 setup 函数中使用的 Composition API (组合API)进行了封装类...
    99+
    2024-04-02
  • vue3.2自定义弹窗组件结合函数式调用示例详解
    目录前言手写弹窗组件组件调用函数式调用如何使用含样式完整源码效果图前言 涉及的vue3知识点/API,createApp defineProps defineEmits <sc...
    99+
    2024-04-02
  • Vue组合式API--setup中定义响应式数据的示例详解
    目录一、Options API(选项式API)的弊端1.1 什么是选项式API1.2 选项式API的弊端二、Composition API(组合式API)概述2.1 Composit...
    99+
    2024-04-02
  • Vue之组件的自定义事件详解
    目录总结 <template> <div > <h2>{{msg}}</h2> <!-- 通过父组件给...
    99+
    2024-04-02
  • Android如何通过组合的方式自定义View
    前言: 自定义View可以分为两种方式: 第一种通过继承ViewGroup,内部通过addView的方式将其他的View组合到一起。第二种则是通过继承View,重启View的onMe...
    99+
    2024-04-02
  • Vue自定义组件v-model使用详解
    目录Vue2中使用Vue3中使用v-model 使用 modelValue自定义 v-model 的使用的参数多个 v-model 绑定自定义v-model 的修饰符Vue2中使用 ...
    99+
    2024-04-02
  • vue自定义开关组件使用详解
    本文实例为大家分享了vue自定义开关组件的具体代码,供大家参考,具体内容如下 switch.vue: <template>   <div class="disLB"...
    99+
    2024-04-02
  • Vue组件模版如何自定义
    本篇内容介绍了“Vue组件模版如何自定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串形式Vue 最简单直接的一种定义组件模版的方式,...
    99+
    2023-07-04
  • JavaScript自定义函数用法详解
    JavaScript中的函数分为两种:系统函数和自定义函数,这里主要讲解自定义函数。 自定义函数 1、语法: 注意: 传入的参数是可选的。 例如: <!DOCTYPE htm...
    99+
    2024-04-02
  • vue如何用directives自定义组件
    这篇“vue如何用directives自定义组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue如何用directive...
    99+
    2023-07-04
  • vue如何自定义组件传值
    本篇内容介绍了“vue如何自定义组件传值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义组件传值常规prop-event父组件<p...
    99+
    2023-07-04
  • hive3.0.0如何自定义函数
    这篇文章主要为大家展示了“hive3.0.0如何自定义函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hive3.0.0如何自定义函数”这篇文章吧。示例代码package hello...
    99+
    2023-06-02
  • Python如何自定义函数
    小编给大家分享一下Python如何自定义函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!自定义函数import requestsfrom b...
    99+
    2023-06-27
  • 如何自定义 PHP 函数?
    自定义 php 函数包括以下步骤:使用 function 关键字声明函数。指定函数名。定义参数(可选)。使用 return 语句返回数据(可选)。调用函数。 如何自定义 PHP 函数:...
    99+
    2024-04-10
    函数 php
  • JavaScript如何自定义函数
    这篇文章主要介绍“JavaScript如何自定义函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何自定义函数”文章能帮助大家解决问题。JavaScript中的函数分为两种:系...
    99+
    2023-06-29
  • 如何使用自定义hooks对React组件进行重构
    这篇文章主要介绍了如何使用自定义hooks对React组件进行重构的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用自定义hooks对React组件进行重构文章都会有所收获,下面我们一起来看看吧。处理复杂性...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作