useDebugValue
useDebugValue — это React Hook, который позволяет добавить метку к custom Hook в React DevTools.
useDebugValue(value, format?)useDebugValue(value, format?)
Вызывайте useDebugValue на верхнем уровне вашего custom Hook, чтобы отображать понятное значение для отладки:
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}Parameters
value: Значение, которое вы хотите отображать в React DevTools. Оно может быть любого типа.- optional
format: Функция форматирования. Когда компонент инспектируется, React DevTools вызовет эту функцию сvalueв качестве аргумента, а затем отобразит возвращённое отформатированное значение (которое тоже может быть любого типа). Если вы не укажете функцию форматирования, будет отображаться само исходноеvalue.
Returns
useDebugValue ничего не возвращает.
Usage
Добавление метки к custom Hook
Вызывайте useDebugValue на верхнем уровне вашего custom Hook, чтобы отображать понятное значение для отладки в React DevTools.
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}Это даёт компонентам, использующим useOnlineStatus, метку вроде OnlineStatus: "Online" при просмотре в инспекторе:
Без вызова useDebugValue отображались бы только базовые данные (в этом примере, true).
import { useOnlineStatus } from './useOnlineStatus.js';function StatusBar() { const isOnline = useOnlineStatus(); return <h1>{isOnline ? '✅ Online' : '❌ Disconnected'}</h1>;}export default function App() { return <StatusBar />;}Не добавляйте значения отладки в каждый custom Hook. Это особенно полезно для custom Hooks, которые являются частью общих библиотек и имеют сложную внутреннюю структуру данных, которую трудно просматривать.
Отложенное форматирование значения отладки
Вы также можете передать функцию форматирования в качестве второго аргумента useDebugValue:
useDebugValue(date, date => date.toDateString());Ваша функция форматирования получит значение отладки в качестве параметра и должна вернуть отформатированное значение для отображения. Когда ваш компонент будет инспектироваться, React DevTools вызовет эту функцию и покажет её результат.
Это позволяет избежать выполнения потенциально дорогой логики форматирования, если компонент фактически не просматривается. Например, если date — это значение Date, это позволяет не вызывать toDateString() на каждом рендере.