useDebugValue¶
useDebugValue
- это хук React, который позволяет добавить метку к пользовательскому хуку в React DevTools.
1 |
|
Описание¶
useDebugValue(value, format?)
¶
Вызывает useDebugValue
на верхнем уровне вашего пользовательского хука для отображения читаемого отладочного значения:
1 2 3 4 5 6 7 |
|
Параметры¶
value
: Значение, которое вы хотите отобразить в React DevTools. Оно может иметь любой тип.- опционально
format
: Функция форматирования. При осмотре компонента React DevTools вызовет функцию форматирования сvalue
в качестве аргумента, а затем отобразит возвращенное форматированное значение (которое может иметь любой тип). Если вы не укажете функцию форматирования, будет отображено исходноеvalue
.
Возвращает¶
useDebugValue
ничего не возвращает.
Использование¶
Добавление метки к пользовательскому крючку¶
Вызовите useDebugValue
на верхнем уровне вашего custom Hook, чтобы отобразить читаемое отладочное значение для React DevTools.
1 2 3 4 5 6 7 |
|
Это дает компонентам, вызывающим useOnlineStatus
, метку типа OnlineStatus: "Online"
при их осмотре:
Без вызова useDebugValue
отображались бы только базовые данные (в данном примере true
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Не добавляйте значения отладки в каждый пользовательский хук. Это наиболее ценно для пользовательских хуков, которые являются частью общих библиотек и имеют сложную внутреннюю структуру данных, которую трудно проверить.
Откладывание форматирования отладочного значения¶
Вы также можете передать функцию форматирования в качестве второго аргумента в useDebugValue
:
1 |
|
Ваша функция форматирования получит отладочное значение в качестве параметра и должна вернуть форматированное отображаемое значение. Когда ваш компонент будет проверен, React DevTools вызовет эту функцию и отобразит ее результат.
Это позволяет вам избежать выполнения потенциально дорогостоящей логики форматирования, пока компонент не будет проверен. Например, если date
является значением Date, это позволяет избежать вызова toDateString()
для него при каждом рендере.