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

React第二十二章(useDebugValue)

useDebugValue

useDebugValue 是一个专为开发者调试自定义 Hook 而设计的 React Hook。它允许你在 React 开发者工具中为自定义 Hook 添加自定义的调试值。

用法

const debugValue = useDebugValue(value)

参数说明

入参

  • value: 要在 React DevTools 中显示的值
  • formatter?: (可选) 格式化函数
    • 作用:自定义值的显示格式
    • 调用时机:仅在 React DevTools 打开时才会调用,可以进行复杂的格式化操作
    • 参数:接收 value 作为参数
    • 返回:返回格式化后的显示值

返回值

  • 无返回值(void)

获取 React DevTools

方式一:Chrome 商店安装

  1. 访问 React Developer Tools
  2. 点击"添加至 Chrome"即可安装

方式二:离线安装

  1. 在微信公众号(小满zs) 回复 React/React工具 获取安装包

在这里插入图片描述

离线安装步骤

  1. 打开 Chrome 浏览器,点击右上角三个点 → 更多工具 → 扩展程序
  2. 开启右上角的"开发者模式"
  3. 将下载的 .crx 文件直接拖拽到扩展程序页面
  4. 在弹出的确认框中点击"添加扩展程序"

实战案例:自定义 useCookie Hook

下面通过实现一个 useCookie Hook 来展示 useDebugValue 的实际应用。这个 Hook 提供了完整的 cookie 操作功能,并通过 useDebugValue 来增强调试体验。

import React, { useState, useDebugValue } from 'react';

const useCookie = (name: string, initialValue: string = '') => {
   const getCookie = () => {
      const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]*)(;|$)`)) 
      return match ? match[2] : initialValue
   }
   const [cookie, setCookie] = useState(getCookie())
   const updateCookie = (value: string, options?: any) => {
      document.cookie = `${name}=${value};${options}`
      setCookie(value)
   }
   const deleteCookie = () => {
      document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT`
      setCookie(initialValue)
   }
   useDebugValue(cookie, (value) => {
      return `cookie: ${value}`
   })
   return [cookie, updateCookie, deleteCookie] as const
}

const App: React.FC = () => {
   const [cookie, updateCookie, deleteCookie] = useCookie('key', 'value')
   return (
      <div>
         <div>{cookie}</div>
         <button onClick={() => { updateCookie('update-value') }}>设置cookie</button>
         <button onClick={() => { deleteCookie() }}>删除cookie</button>
      </div>
   );
}

export default App;

Hook 功能说明

  1. getCookie: 获取指定名称的 cookie 值
  2. updateCookie: 更新或创建新的 cookie
  3. deleteCookie: 删除指定的 cookie

useDebugValue 的应用

在这个例子中,我们使用 useDebugValue 来显示当前 cookie 的值:

useDebugValue(cookie, (value) => `cookie: ${value}`)

调试效果展示

在 React DevTools 中的显示效果:

在这里插入图片描述

更新 cookie 后的显示效果:

在这里插入图片描述

使用建议

  1. 仅在自定义 Hook 中使用 useDebugValue
  2. 对于简单的值,可以省略 formatter 函数
  3. 当格式化值的计算比较昂贵时,建议使用 formatter 函数,因为它只在开发者工具打开时才会执行

http://www.kler.cn/a/508494.html

相关文章:

  • cmake foreach 条件判断
  • Redis系列之底层数据结构字典Dict
  • 深入了解卷积神经网络(CNN):图像处理与深度学习的革命性技术
  • minio https配置
  • 采用海豚调度器+Doris开发数仓保姆级教程(满满是踩坑干货细节,持续更新)
  • K8S集群常用命令
  • TikTok专线服务器助力品牌营销新高度
  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250117
  • magic-dash:纯Python轻松开发网页应用
  • 使用 Vue.js 3 开发动态模块化组件:实现插件式表单系统
  • python实现webrtc通过whep拉取实时音频流
  • [leetcode](适合有一定基础需要刷题的宝宝)map STL的增删查改
  • 怎么修复损坏的U盘?而且不用格式化的方式!
  • (一)相机标定——四大坐标系的介绍、对应转换、畸变原理以及OpenCV完整代码实战(C++版)
  • MySQL下载安装及配置
  • mysql-5.7.18保姆级详细安装教程
  • 数据仓库复用性:业务需求复用性设计
  • Mac 使用 GVM 管理多版本 Go 环境
  • Big-endian(大端字节序)与Little-endian(小端字节序)区别
  • 【数据库】MySQL数据库SQL语句汇总
  • 基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)
  • MySQL 与 Redis 数据一致性 2
  • Python使用seleniumwire接管Chrome查看控制台中参数
  • Debian 设定 tomcat 定时重启
  • LabVIEW时域近场天线测试
  • Django创建项目速成