useDebugValue
Хук useDebugValue
позволяет добавить метку к пользовательскому хуку в React DevTools.
useDebugValue(value, format?)
Справочник
useDebugValue(value, format?)
Вызовите useDebugValue
на верхнем уровне пользовательского хука, чтобы отобразить читаемое отладочное значение:
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}
Параметры
value
: Значение, которое вы хотите отобразить в React DevTools. Значение может быть любого типа.- необязательный
format
: Функция форматирования. При осмотре компонента React DevTools вызовет функцию форматирования сvalue
в качестве аргумента, а затем отобразит возвращаемое отформатированное значение (которое может иметь любой тип). Если не указать функцию форматирования, то будет отображено исходнное значениеvalue
.
Возвращаемое значение
useDebugValue
ничего не возвращает.
Использование
Добавление метки к пользовательскому хуку
Вызовите useDebugValue
на верхнем уровне пользовательского хука, чтобы отобразить читаемое отладочное значение debug value в React DevTools.
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}
В результате компоненты, вызывающие useOnlineStatus
, получают метку типа OnlineStatus: "Online"
при их осмотре:
Без вызова useDebugValue
отображались бы только базовые данные (в данном примере - true
).
import { useSyncExternalStore, useDebugValue } from 'react'; export function useOnlineStatus() { const isOnline = useSyncExternalStore(subscribe, () => navigator.onLine, () => true); useDebugValue(isOnline ? 'Online' : 'Offline'); return isOnline; } function subscribe(callback) { window.addEventListener('online', callback); window.addEventListener('offline', callback); return () => { window.removeEventListener('online', callback); window.removeEventListener('offline', callback); }; }
Отсрочка форматирования отладочного значения
Вы можете передать функцию форматирования в качестве второго аргумента в useDebugValue
:
useDebugValue(date, date => date.toDateString());
Ваша функция форматирования будет получать в качестве параметра debug value и должна возвращать форматированное отображаемое значение. Когда ваш компонент будет осмотрен, React DevTools вызовет эту функцию и отобразит ее результат.
Это позволит избежать выполнения потенциально дорогостоящей логики форматирования, если компонент не проверяется. Например, если date
является значением Date, это позволит избежать вызова toDateString()
для него при каждом рендеринге.