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() ใ‚’ๅ‘ผใณๅ‡บใ™ใ“ใจใ‚’ๅ›ž้ฟใงใใพใ™ใ€‚