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 на верхнем уровне вашего пользовательского хука, чтобы отобразить читаемое отладочное значение для 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() для него при каждом рендере.
Источник — https://react.dev/reference/react/useDebugValue
