useDebugValue は React γƒ•γƒƒγ‚―γ§γ‚γ‚Šγ€React DevTools γ§γ‚«γ‚Ήγ‚Ώγƒ γƒ•γƒƒγ‚―γ«γƒ©γƒ™γƒ«γ‚’θΏ½εŠ γ§γγ‚‹γ‚ˆγ†γ«γ—γΎγ™γ€‚

useDebugValue(value, format?)

γƒͺフゑレンス

useDebugValue(value, format?)

カスタムフック�?γƒˆγƒƒγƒ—γƒ¬γƒ™γƒ«γ§ useDebugValue を呼び出して、θͺ­γΏγ‚„すいデバッグ倀を葨瀺します。

import { useDebugValue } from 'react';

function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}

さらに例を見る

εΌ•ζ•°

  • value: React DevTools γ«θ‘¨η€Ίγ—γŸγ„ε€€γ€‚δ»»ζ„οΏ½?εž‹γŒδ½ΏγˆγΎγ™γ€‚
  • 省η•₯可能 format: γƒ•γ‚©γƒΌγƒžγƒƒγ‚Ώι–’ζ•°γ€‚γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγŒγ‚€γƒ³γ‚Ήγƒšγ‚―γƒˆοΌˆinspect, θͺΏζŸ»οΌ‰γ•γ‚Œγ‚‹γ¨γ€React DevTools は value γ‚’εΌ•ζ•°γ¨γ—γ¦γƒ•γ‚©γƒΌγƒžγƒƒγ‚Ώι–’ζ•°γ‚’ε‘Όγ³ε‡Ίγ—γ€θΏ”γ•γ‚ŒγŸγƒ•γ‚©γƒΌγƒžγƒƒγƒˆζΈˆγΏοΏ½?ε€€οΌˆδ»»ζ„οΏ½?εž‹γŒδ½ΏγˆγΎγ™οΌ‰γ‚’θ‘¨η€Ίγ—γΎγ™γ€‚γƒ•γ‚©γƒΌγƒžγƒƒγ‚Ώι–’ζ•°γ‚’ζŒ‡οΏ½?�しγͺγ„ε ΄εˆγ€ε…ƒοΏ½? value θ‡ͺδ½“γŒθ‘¨η€Ίγ•γ‚ŒγΎγ™γ€‚

θΏ”γ‚Šε€€

useDebugValue は何も返しません。

使用法

γ‚«γ‚Ήγ‚Ώγƒ γƒ•γƒƒγ‚―γ«γƒ©γƒ™γƒ«γ‚’θΏ½εŠ γ™γ‚‹

カスタムフック�?γƒˆγƒƒγƒ—γƒ¬γƒ™γƒ«γ§ useDebugValue を呼び出し、React DevTools に対してθͺ­γΏγ‚„すいデバッグ倀を葨瀺します。

import { useDebugValue } from 'react';

function useOnlineStatus() {
// ...
useDebugValue(isOnline ? 'Online' : 'Offline');
// ...
}

γ“γ‚Œγ«γ‚ˆγ‚Šγ€useOnlineStatus γ‚’ε‘Όγ³ε‡Ίγ™γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’γ‚€γƒ³γ‚Ήγƒšγ‚―γƒˆγ™γ‚‹γ¨ OnlineStatus: "Online" οΏ½?γ‚ˆγ†γͺγƒ©γƒ™γƒ«γŒδ»˜γγΎγ™γ€‚

React DevTools γŒγƒ‡γƒγƒƒγ‚°ε€€γ‚’θ‘¨η€Ίγ™γ‚‹γ‚Ήγ‚―γƒͺγƒΌγƒ³γ‚·γƒ§γƒƒγƒˆ

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 οΏ½?第 2 εΌ•ζ•°γ¨γ—γ¦γƒ•γ‚©γƒΌγƒžγƒƒγ‚Ώι–’ζ•°γ‚‚ζΈ‘γ™γ“γ¨γŒγ§γγΎγ™οΌš

useDebugValue(date, date => date.toDateString());

あγͺた�?γƒ•γ‚©γƒΌγƒžγƒƒγ‚Ώι–’ζ•°γ―γ€γƒ‡γƒγƒƒγ‚°ε€€γ‚’εΌ•ζ•°γ¨γ—γ¦ε—γ‘ε–γ‚Šγ€γƒ•γ‚©γƒΌγƒžγƒƒγƒˆγ•γ‚ŒγŸθ‘¨η€Ίε€€γ‚’θΏ”γ™εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγŒγ‚€γƒ³γ‚Ήγƒšγ‚―γƒˆγ•γ‚Œγ‚‹γ¨γ€React DevTools はこ�?閒数を呼び出し、そ�?η΅ζžœγ‚’θ‘¨η€Ίγ—γΎγ™γ€‚

γ“γ‚Œγ«γ‚ˆγ‚Šγ€γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγŒοΏ½?οΏ½ιš›γ«γ‚€γƒ³γ‚Ήγƒšγ‚―γƒˆγ•γ‚Œγͺγ„ι™γ‚Šγ€γ‚³γ‚ΉγƒˆγŒγ‹γ‹γ‚‹ε―θƒ½ζ€§γŒγ‚γ‚‹γƒ•γ‚©γƒΌγƒžγƒƒγƒˆγƒ­γ‚Έγƒƒγ‚―γ‚’οΏ½?οΏ½θ‘Œγ™γ‚‹γ“γ¨γ‚’ε›žιΏγ§γγΎγ™γ€‚δΎ‹γˆγ°γ€date が Date ε€€οΏ½?ε ΄εˆγ€γƒ¬γƒ³γƒ€γƒΌοΏ½?度に toDateString() γ‚’ε‘Όγ³ε‡Ίγ™γ“γ¨γ‚’ε›žιΏγ§γγΎγ™γ€‚