useDebugValue הוא React Hook שמאפשר להוסיף תווית ל-custom Hook בתוך React DevTools.
useDebugValue(value, format?)Reference
useDebugValue(value, format?)
קראו ל-useDebugValue ברמה העליונה של custom Hook כדי להציג ערך דיבוג קריא:
import { useDebugValue } from 'react';
function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}Parameters
value: הערך שאתם רוצים להציג ב-React DevTools. יכול להיות מכל סוג.- אופציונלי
format: פונקציית עיצוב. כשבודקים את הקומפוננטה, React DevTools תקרא לפונקציית העיצוב עםvalueכארגומנט, ואז תציג את הערך המעוצב שהוחזר (שגם הוא יכול להיות מכל סוג). אם לא מציינים פונקציית עיצוב, יוצג הערך המקוריvalue.
Returns
useDebugValue לא מחזירה דבר.
שימוש
הוספת תווית ל-custom Hook
קראו ל-useDebugValue ברמה העליונה של custom Hook כדי להציג ערך דיבוג קריא עבור 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());פונקציית העיצוב תקבל את ערך הדיבוג כפרמטר וצריכה להחזיר ערך תצוגה מעוצב. כשבודקים את הקומפוננטה, React DevTools תקרא לפונקציה הזו ותציג את התוצאה.
כך אפשר להימנע מהרצת לוגיקת עיצוב יקרה אלא אם הקומפוננטה באמת נבדקת. לדוגמה, אם date הוא ערך מסוג Date, זה מונע קריאה ל-toDateString() בכל רינדור.