当前位置: 首页 > news >正文

React的hooks---自定义hooks

通过自定义 Hook,可以将组件逻辑提取到可重用的函数中,在 Hook 特性之前,React 中有两种流行的方式来共享组件之间的状态逻辑:render props高阶组件,但此类解决方案会导致组件树的层级冗余等问题。而自定义 Hook 的使用可以很好的解决此类问题

创建自定义 Hook:

自定义 Hook 是一个函数,其名称以 “use” 开头,函数内部可以调用其他的 Hook。以下就是实时获取鼠标位置的自定义 Hook 实现:

import { useEffect, useState } from "react"export const useMouse = () => {const [position, setPosition] = useState({x: null,y: null});useEffect(() => {const moveHandler = (e) => {setPosition({x: e.screenX,y: e.screenY});};document.addEventListener('mousemove', moveHandler);return () => {document.removeEventListener('mousemove', moveHandler);};}, []);return position;
}

 使用自定义 Hook:

 自定义 Hook 的使用规则与 Hook 使用规则基本一致,以下是 useMouse 自定义 Hook 的使用过程:

import React from 'react';
import { useMouse } from '../hooks/useMouse';export default function MouseMove() {const { x, y } = useMouse();return (<><p>Move mouse to see changes</p><p>x position: {x}</p><p>y position: {y}</p></>);
}

每次使用自定义 Hook 时,React 都会执行该函数来获取独立的 state 和执行独立的副作用函数,所有 state 和副作用都是完全隔离的

http://www.lryc.cn/news/97030.html

相关文章:

  • Asp.Net 使用Log4Net (基础版)
  • STM32 互补PWM 带死区 HAL
  • 20230721在WIN10下安装openssl并解密AES-128加密的ts视频切片
  • 使用Python实现产品图片自动化处理
  • 在CSDN学Golang云原生(git)
  • QT多线程编程基础
  • TRT4-trt-integrate - 3 使用onnxruntime进行onnx的模型推理过程
  • layui+drogon完成文件上传(简例)
  • 高精度地图服务引擎项目
  • PyTorch使用Transformer进行机器翻译
  • LoadRunner使用教程
  • Zia和ChatGPT如何协同工作?
  • 【位操作】——获取整数变量最低位为 1 的位置
  • gtest测试用例注册及自动化调度机制源代码流程分析
  • IOS自动化测试环境搭建教程
  • 常用API学习08(Java)
  • 面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
  • Jenkins 还可以支持钉钉消息通知?一个插件带你搞定!
  • 7.ES使用
  • Web安全基础
  • jQueryAPI
  • 如何将路径字符串数组(string[])转成树结构(treeNode[])?
  • 中国工程院院士陈晓红一行莅临麒麟信安调研
  • 解决Linux环境下启动idea服务,由于权限问题无法正常启动问题
  • Linux6.16 Docker consul的容器服务更新与发现
  • Redis学习2--使用java操作Redis
  • [游戏数值] 常用刷新次数钻石消耗的设计
  • rancher 2.5.7 证书过期处理方案
  • Tomcat中的缓存配置
  • C++ 函数模板