我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Hooks怎么封装与使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Hooks怎么封装与使用

今天小编给大家分享一下Hooks怎么封装与使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    Hooks是什么?

    本篇文章主要介绍Hooks如何在React与Vue3两大框架中封装使用。

    Hooks就是当代码执行在某个执行阶段,触发被钩子钩到的事件函数或者回调函数,Hooks的概念最早在React的V16.8.0版本正式推出,后面Vue3的出现也引入Hooks的概念,两者使用Hooks还是会有所差异。

    Hooks解决了什么?

    • 完善代码能力

    • 组件逻辑复用

    HOC与HOOK对比

    HOC概念:hoc是React中用于重用组件逻辑的一种高级技术实现模式,它本身是一个函数,接受一个组件并返回一个新的组件

    • HOC

    function Hocomponent(WrappedComponent, selectData) {  return class extends React.Component {    constructor(props) {      super(props);      this.state = {        data: selectData(DataSource, props)      };    }     render() {      // ... 并使用新数据渲染被包装的组件!      return <WrappedComponent data={this.state.data} {...this.props} />;    }  };

    上边的例子可以看出高阶组件内部返回了一个类组件,通过这个类组件对WrappedComponent进行包装,在返回得到一个全新的组件。但是HOC的缺点就是props可能会被覆盖,而且容易产生嵌套地域。

    • Hooks

    react-Hooks的出现主要弥补函数组件无状态无生命周期问题等,主要应对class复杂组件变的难以理解,逻辑混乱,不易拆解和测试与嵌套地域问题。

    分别使用React与Vue3两种框架封装useThrottle钩子函数

    • React实现节流Hooks

    import { useState, useCallback } from "react"; export function useThrottleFn(fn, time) {    let [isTimer,setIsTimer] = useState<any>(null);      const clear = () => {        clearTimeout(isTimer);        setIsTimer(null)     }     let throttle = useCallback(()=>{         if (!isTimer) {            setIsTimer(setTimeout(() => {                fn()                clear()             }, time))         }    },[fn, time])    return [throttle]}// 引入使用  const [throttle] = useThrottleFn((e)=>{        console.log(e)    },500)    const Ceshi  = ()=>{        let e = 'Hooks'        throttle(e);    }

    React内部也存在很多的Hooks钩子,常用的钩子:

    useState,useMemo,useCallback,useRef,useContext,但是这些钩子必须在函数组件中使用并且在函数组件中使用钩子需要在组件顶层调用,不能在Class中使用。这样一来让我们可以挥手告别this.xxx的时代。

    • Vue3实现节流Hooks

    import { ref, unref, watch } from 'vue';import { useTimeouts } from './useTimeout';export function useThrottleFn(fn, wait = 80) {  if (typeof fn !== 'function') {    return;  }  let Timer: any = null;    const isReady = ref<Boolean>(false);  const clearun = () => {    Timer && clearTimeout(Timer);  };  // 闭包实现节流封装     return function () {    const _this = this;    const args = arguments;    // 更改状态触发watch监听,触发回调函数fn    const startFun = function () {      isReady.value = true;    };    // 这里利用watch监听isReady的状态变化执行回到函数,而不是直接将回调函数放在定时器中    watch(      () => unref(isReady),      () => {        if (unref(isReady) && Timer) {          fn.apply(_this, args);          isReady.value = false;          Timer = null;          clearun();        }      },    );    // Timer 如果不存在就开始执行    if (!Timer) {      Timer = setTimeout(startFun, wait);    }  };}// 引入使用const Ceshi = useThrottleFn(()=>{      console.log('Hooks')},300)

    Vue3的发布随之带来了很多新特性比如从选项式API到组合式API,引入Hooks等。那这里在介绍一个新的工具库Vueuse,Vueuse 基于Vue-demi封装了大量的钩子工具函数,比如useDark,useToggle其他点击Vueuse文档查看更多,并且在Vue2与Vue3都可以使用。当然我们也可以自己自定义按需求封装Hooks,但在Vue3中使用Hooks需要在setup中使用,由setup作为组合式API的入口点,在Vue2使用需要安装VueCompositionApi进行使用。

    以上就是“Hooks怎么封装与使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Hooks怎么封装与使用

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

    下载Word文档

    猜你喜欢

    Hooks怎么封装与使用

    今天小编给大家分享一下Hooks怎么封装与使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Hooks是什么?本篇文章主要介
    2023-07-04

    Hooks封装与使用示例详解

    这篇文章主要为大家介绍了Hooks封装与使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-04

    Android startActivityForResult怎么调用与封装

    今天小编给大家分享一下Android startActivityForResult怎么调用与封装的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
    2023-07-05

    Android中HttpURLConnection与HttpClient的使用与封装

    1.写在前面 大部分andriod应用需要与服务器进行数据交互,HTTP、FTP、SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议。 本文并不针对HTTP协议的具体内容,仅探讨an
    2022-06-06

    怎么在React中使用Hooks

    这篇文章给大家介绍怎么在React中使用Hooks,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、State Hook1、基础用法function State(){ const [count, setCount]
    2023-06-14

    Laravel8 ES怎么封装及使用

    这篇文章主要介绍“Laravel8 ES怎么封装及使用”,在日常操作中,相信很多人在Laravel8 ES怎么封装及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Laravel8 ES怎么封装及使用”的疑
    2023-07-04

    怎么使用python封装成exe

    这篇“怎么使用python封装成exe”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用python封装成exe”文章吧
    2023-07-02

    hooks怎么在react中使用

    hooks怎么在react中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。State Hooks案例:import { useState } from react;func
    2023-06-14

    C++类与封装的概念是什么及怎么使用

    这篇文章主要介绍“C++类与封装的概念是什么及怎么使用”,在日常操作中,相信很多人在C++类与封装的概念是什么及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++类与封装的概念是什么及怎么使用”的疑
    2023-06-30

    axios的二次封装与proxy反向代理怎么使用

    本文小编为大家详细介绍“axios的二次封装与proxy反向代理怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“axios的二次封装与proxy反向代理怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
    2023-06-29

    Vue3项目中的hooks怎么使用

    本篇内容介绍了“Vue3项目中的hooks怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!hooks 特点vue3 中的 hooks
    2023-07-06

    java封装进程的类怎么使用

    要使用Java封装进程的类,首先需要导入相应的类库。在Java中,可以使用ProcessBuilder类来创建和控制进程。下面是一个简单的示例代码,演示如何使用ProcessBuilder类来运行一个命令并获取其输出:import jav
    java封装进程的类怎么使用
    2024-03-14

    python中类怎么定义与封装

    在Python中,可以使用class关键字来定义一个类。类的定义包括类名、类的属性和方法。类的封装是指将类的属性和方法封装起来,只允许通过类的接口访问和修改属性,以及调用方法。这样可以隐藏类的实现细节,提高代码的可维护性和安全性。下面是一个
    2023-10-19

    Git的Hooks怎么自定义使用

    这篇文章主要介绍“Git的Hooks怎么自定义使用”,在日常操作中,相信很多人在Git的Hooks怎么自定义使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Git的Hooks怎么自定义使用”的疑惑有所帮助!
    2023-06-29

    React Hooks使用startTransition与useTransition教程示例

    这篇文章主要为大家介绍了React Hooks使用startTransition与useTransition教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-10

    ThinkPHP5框架中怎么使用和封装Redis

    这篇文章主要介绍“ThinkPHP5框架中怎么使用和封装Redis”,在日常操作中,相信很多人在ThinkPHP5框架中怎么使用和封装Redis问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ThinkPHP5
    2023-06-29

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录