iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >React如何自定义hook
  • 122
分享到

React如何自定义hook

2023-07-02 13:07:44 122人浏览 独家记忆
摘要

本篇内容主要讲解“React如何自定义hook”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React如何自定义hook”吧!什么是hookHook是 React 16.8 的新增特性。它通常与

本篇内容主要讲解“React如何自定义hook”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React如何自定义hook”吧!

什么是hook

HookReact 16.8 的新增特性。它通常与函数式组件同时使用。可以使函数式组件在不编写 class 的情况下,可以拥有class组件的状态、生命周期、引用等功能。


  • 常用的有哪些hook

React中常用的hooks有:

  • useState 状态管理

  • useEffect 生命周期

  • useContext 跨组件数据传递

  • useRef 组件引用

  • ....


  • 自定义hook

自定义hook其实就是自定义函数,与我们写函数组件非常类似。自定义的hook组件的命名与系统的hooks一样,需要以use开头。下面我们用react+ts就来介绍一下常用的几个自定义hook

  • 获取窗口宽高变化

实现目标:通过 usewindowsize()来实时获取窗口的宽高

新建一个hook文件useWindowSize.ts,代码如下:

import { useEffect, useState } from "react";//定义size对象interface WindowSize {    width: number,    height: number}const useWindowSize = () => {    const [size, setSize] = useState<WindowSize>({        width: document.documentElement.clientWidth,        height: document.documentElement.clientHeight    })    useEffect(() => {        //监听size变化        window.addEventListener('resize', () => {            setSize({                width: document.documentElement.clientWidth,                height: document.documentElement.clientHeight            })        })        return () => {            //组件销毁时移除监听            window.removeEventListener('resize', () => {                setSize({                    width: document.documentElement.clientWidth,                    height: document.documentElement.clientHeight                })            })        }    },[])    return size}export default useWindowSize

组件中这样使用:

import useWindowSize from './hooks/useWindowSize';function App() {  const size = useWindowSize()  return (    <div>      <div>页面宽度:{size.width}</div>      <div>页面高度:{size.height}</div>    </div>  )}export default App

在浏览器拖动放大缩小时,页面上的数据可动态变化

  • 获取滚动偏移量变化

目标:通过 useWindowScroll()来实时获取页面的滚动偏移量

新建一个hook文件useWindowScroll.ts,代码如下:

import { useEffect, useState } from "react"//定义偏移量对象interface ScrollOffset {    x: number,    y: number}const useWindowScroll = () => {    const [off, setOff] = useState<ScrollOffset>({        x: window.scrollX,         y: window.scrollY    })    useEffect(() => {        //监听        window.addEventListener('scroll', () => {            setOff({                x: window.scrollX,                y: window.scrollY            })        })        return () => {            //移除监听            window.removeEventListener('scroll', () => {                setOff({                    x: window.scrollX,                    y: window.scrollY                })            })        }    })    return off}export default useWindowScroll

组件中这样使用:

import useWindowScroll from './hooks/useWindowScroll';function App() {  const offSet = useWindowScroll()  return (    <div style={{height: '10000px', width: '10000px'}}>      <div>滚动y:{offSet.y}</div>      <div>滚动x:{offSet.x}</div>    </div>  )}export default App
  • 自动同步至localStorage

目标:通过 const [value, setValue] = useLocalStorage('key', 'value') 可以传入默认的初始value和key,且每次修改value可以自动同步到localStorage中

新建一个hook类useLocalStorage,代码如下:

import { useEffect, useState } from "react"const useLocalStorage = (key: string, defaultValue: string) : ([string, React.Dispatch<React.SetStateAction<string>>]) => {    const [value, setValue] = useState(defaultValue)    useEffect(() => {        window.localStorage.setItem(key, value)    },[key, value])    return [value, setValue]}export default useLocalStorage

组件中使用:

import useLocalStorage from './hooks/useLocalStorage';function App() {  const [value, setValue] = useLocalStorage('key', 'react')  return (    <div>    <button onClick={() => {        //点击修改value,会自动同步至本地        setValue('Vue')      }}>点击</button>      <div>{ value }</div>    </div>  )}export default App

到此,相信大家对“React如何自定义hook”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: React如何自定义hook

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

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

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

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

下载Word文档
猜你喜欢
  • React如何自定义hook
    本篇内容主要讲解“React如何自定义hook”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React如何自定义hook”吧!什么是hookHook是 React 16.8 的新增特性。它通常与...
    99+
    2023-07-02
  • 详解React自定义Hook
    目录前言如何自定义 Hooks组件之间共享逻辑自定义 Hooks 允许你共享有状态逻辑,而不是状态本身分类功能型 HooksuseWindowWidthuseLocalStorage...
    99+
    2023-05-17
    React自定义Hook React Hook
  • React自定义hook的方法
    目录什么是hook常用的有哪些hook自定义hook什么是hook Hook是 React 16.8 的新增特性。它通常与函数式组件同时使用。可以使函数式组件在不编写 class 的...
    99+
    2022-11-13
  • react实现自定义拖拽hook
    前沿 最近发现公司的产品好几个模块用到了拖拽功能,之前拖拽组件是通过Html5 drag Api 实现的但体验并不是很好,顺便将原来的拖拽组建稍做修改,写一个自定义hook,方便大家...
    99+
    2022-11-13
  • 深入理解React的自定义Hook
    自定义 Hooks 的核心是共享组件之间的逻辑。使用自定义 Hooks 能够减少重复的逻辑,更重要的是,自定义 Hooks 内部的代码描述了它们想做什么,而不是如何做。当你将逻辑提取到自定义Hooks 中时,你可以隐藏如何处理某些"...
    99+
    2023-05-14
    前端 代码规范 React.js
  • React自定义Hook-useForkRef的具体使用
    目录开篇思路实现自定义 Hook - useForkRef开篇 使用过 React 技术栈的同学相信都使用过 ref 传递给 render 中的元素,而在使用 React 封装组件时...
    99+
    2022-11-13
  • Vue怎么自定义hook函数
    这篇文章主要介绍“Vue怎么自定义hook函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue怎么自定义hook函数”文章能帮助大家解决问题。定义什么是hook本质是一个函数,把 setup 函...
    99+
    2023-07-02
  • 详解Vue 自定义hook 函数
    目录定义使用封装发ajax请求的hook函数(ts版本)定义 什么是hook 本质是一个函数,把 setup 函数中使用的 Composition API (组合API)进行了封装类...
    99+
    2022-11-13
  • 自定义Hook的方法有哪些
    这篇文章主要介绍“自定义Hook的方法有哪些”,在日常操作中,相信很多人在自定义Hook的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”自定义Hook的方法有哪些”...
    99+
    2022-10-19
  • vue3的自定义hook函数使用
    目录自定义hook函数使用vue3 hooks函数示例官方示例代码---封装前使用hooks函数封装后hooks函数自定义hook函数使用 使用Vue3的组合API封装的可复用的功能...
    99+
    2022-11-13
  • React Hook中如何使用State Hook
    今天小编给大家分享一下React Hook中如何使用State Hook的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2023-06-29
  • 如何学习React-Hook
    本篇内容主要讲解“如何学习React-Hook”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何学习React-Hook”吧!数据绑定在react中state的...
    99+
    2022-10-19
  • hook如何在react中使用
    今天就跟大家聊聊有关hook如何在react中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、什么是hook?react hook是react 16.8推出的方法,能够让函数式...
    99+
    2023-06-14
  • React函数组件useContextuseReducer自定义hooks
    目录一、hooks(useContext)二、hooks(useReducer)三、hooks(useContext搭配useReducer使用)四、自定义hooks一、hooks(...
    99+
    2022-11-13
    React hooks函数组件 React useContext useReducer
  • React Native如何使用Modal自定义分享界面
    小编给大家分享一下React Native如何使用Modal自定义分享界面,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在很多App中都会涉及到分享,React Native提供了Moda...
    99+
    2022-10-19
  • React Hook中useEffecfa函数如何使用
    这篇文章主要介绍“React Hook中useEffecfa函数如何使用”,在日常操作中,相信很多人在React Hook中useEffecfa函数如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rea...
    99+
    2023-07-04
  • 教你在react中创建自定义hooks
    一、什么是自定义hooks 逻辑复用         简单来说就是使用自定义hook可以将某些组件逻辑提取到可重用的函数中。 自...
    99+
    2022-11-12
  • 怎么在react中创建自定义hooks
    这篇文章主要介绍“怎么在react中创建自定义hooks”,在日常操作中,相信很多人在怎么在react中创建自定义hooks问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在react中创建自定义hooks...
    99+
    2023-06-25
  • React如何定义错误边界
    这篇文章将为大家详细讲解有关React如何定义错误边界,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。定义错误边界在Javascript里,我们都是使用 try/catch 来捕捉可能发...
    99+
    2023-06-26
  • 如何使用自定义hooks对React组件进行重构
    这篇文章主要介绍了如何使用自定义hooks对React组件进行重构的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用自定义hooks对React组件进行重构文章都会有所收获,下面我们一起来看看吧。处理复杂性...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作