useDebugValue
useDebugValue
é um Hook do React que permite adicionar um rótulo a um Hook personalizado no React DevTools.
useDebugValue(value, format?)
Referência
useDebugValue(value, format?)
Chame useDebugValue
na raiz do seu Hook personalizado para exibir um valor de depuração legível:
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}
Parâmetros
value
: O valor que você deseja exibir no React DevTools. Pode ter qualquer tipo.- opcional
format
: Uma função de formatação. Quando o componente é inspecionado, o React DevTools chamará a função de formatação com ovalue
como argumento e, em seguida, exibirá o valor formatado retornado (que pode ter qualquer tipo). Se você não especificar a função de formatação, o valor originalvalue
será exibido.
Retornos
useDebugValue
não retorna nada.
Uso
Adicionando um rótulo a um Hook personalizado
Chame useDebugValue
na raiz do seu Hook personalizado para exibir um valor de depuração legível para React DevTools.
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}
Isso fornece aos componentes que chamam useOnlineStatus
um rótulo como OnlineStatus: "Online"
quando você os inspeciona:
Sem a chamada useDebugValue
, apenas os dados subjacentes (neste exemplo, true
) seriam exibidos.
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); }; }
Adiando a formatação de um valor de depuração
Você também pode passar uma função de formatação como o segundo argumento para useDebugValue
:
useDebugValue(date, date => date.toDateString());
Sua função de formatação receberá o valor de depuração como parâmetro e deve retornar um valor de exibição formatado. Quando seu componente é inspecionado, o React DevTools chamará essa função e exibirá seu resultado.
Isso permite evitar executar lógica de formatação potencialmente cara, a menos que o componente seja realmente inspecionado. Por exemplo, se date
for um valor Date, isso evita chamar toDateString()
nele para cada renderização.