useDebugValue 用于在 React DevTools 中为自定义 Hook 添加调试标签。

useDebugValue Hook 详解

useDebugValue 用于在 React DevTools 中为自定义 Hook 添加标签,提升调试体验。

// 基本语法

// 简单用法
useDebugValue(value);

// 延迟格式化(推荐)
useDebugValue(value, (v) => formatValue(v));

💡 如何查看效果?

  1. 安装 React DevTools 浏览器扩展
  2. 打开开发者工具,切换到 Components 标签
  3. 选择使用了这些 Hook 的组件
  4. 在右侧 hooks 面板中查看 useDebugValue 的输出

示例 1: useOnlineStatus

🟢

在线

useDebugValue 用法:

useDebugValue(isOnline ? "🟢 在线" : "🔴 离线");

打开 React DevTools,查看 hooks 面板可以看到状态

示例 2: useLocalStorage

0

useDebugValue 用法:

useDebugValue(
  { key, value },
  (debug) => `${debug.key}: ${JSON.stringify(debug.value)}`
);

示例 3: useWindowSize

宽度

0

高度

0

调整浏览器窗口大小查看变化

useDebugValue 用法:

useDebugValue(`${size.width} × ${size.height}`);

示例 4: useFetch

点击按钮获取数据

useDebugValue 用法:

useDebugValue(state, (s) => {
  if (s.loading) return "⏳ 加载中...";
  if (s.error) return `❌ 错误: ${s.error}`;
  if (s.data) return "✅ 成功";
  return "⚪ 空闲";
});

示例 5: useMediaQuery

手机

(max-width: 768px)

平板

(min-width: 769px) and (max-width: 1024px)

桌面

(min-width: 1025px)

深色模式

(prefers-color-scheme: dark)

useDebugValue 用法:

useDebugValue(`${query}: ${matches ? "✅" : "❌"}`);

使用建议

  • 只在自定义 Hook 中使用,不要在组件中使用
  • 对于复杂值,使用格式化函数延迟计算
  • 主要用于开发共享的 Hook 库
  • 不要过度使用,简单状态不需要 useDebugValue