ν‹°μŠ€ν† λ¦¬ λ·°

web/react hook

useDebugValue

dev_been94 2024. 12. 14. 11:55
728x90
λ°˜μ‘ν˜•

useDebugValue

 

🎯 useDebugValueλž€ λ¬΄μ—‡μΌκΉŒ?

**useDebugValue**λŠ” React 개발자 도ꡬ(React DevTools)μ—μ„œ μ»€μŠ€ν…€ 훅을 더 μ‰½κ²Œ 디버깅할 수 μžˆλ„λ‘ 도움을 μ£ΌλŠ” λ„κ΅¬μ˜ˆμš”.

  • μ»€μŠ€ν…€ ν›…μ΄λž€?
    μ—¬λŸ¬ React ν›…(useState, useEffect λ“±)을 μ‘°ν•©ν•΄μ„œ λ‚˜λ§Œμ˜ 훅을 λ§Œλ“œλŠ” κ±°μ˜ˆμš”.
    예λ₯Ό λ“€λ©΄ useUserData, useFetchData 같은 κ²ƒλ“€μ΄μš”.

**useDebugValue**λ₯Ό μ‚¬μš©ν•˜λ©΄ 이 μ»€μŠ€ν…€ 훅이 μ–΄λ–€ 값을 λ°˜ν™˜ν•˜λŠ”μ§€λ₯Ό React 개발자 λ„κ΅¬μ—μ„œ ν•œλˆˆμ— 확인할 수 μžˆμ–΄μš”.
디버깅할 λ•Œ μ•„μ£Ό μœ μš©ν•˜λ‹΅λ‹ˆλ‹€! πŸ”

 

πŸ“¦ 택배 μƒμž μ΄μ•ΌκΈ°λ‘œ 이해해보기

μ»€μŠ€ν…€ 훅은 마치 택배 μƒμž κ°™μ•„μš”. πŸ“¦

  • 택배 μƒμž(μ»€μŠ€ν…€ ν›…) μ•ˆμ— 뭐가 λ“€μ–΄μžˆλŠ”μ§€ κ²‰μœΌλ‘œλŠ” 보이지 μ•Šμ•„μš”.
  • ν•˜λ‚˜μ”© μ—΄μ–΄λ³΄λ©΄μ„œ 확인해야 ν•˜λŠ”λ°, μƒμžκ°€ λ§Žμ•„μ§€λ©΄ νž˜λ“€κ² μ£ ?

useDebugValueλ₯Ό μ‚¬μš©ν•˜λ©΄ μƒμžμ— 라벨을 λΆ™μ΄λŠ” κ²ƒμ²˜λŸΌ,
React 개발자 도ꡬ에 **"이 μƒμž μ•ˆμ—λŠ” 이런 값이 λ“€μ–΄μžˆμ–΄μš”"**라고 ν‘œμ‹œν•΄μ€˜μš”.

 

πŸ› οΈ useDebugValue μ½”λ“œ μ˜ˆμ‹œ

예λ₯Ό λ“€μ–΄, μ‚¬μš©μž 정보λ₯Ό κ°€μ Έμ˜€λŠ” μ»€μŠ€ν…€ ν›… useUserλ₯Ό λ§Œλ“€μ–΄ λ³Όκ²Œμš”.

import React, { useState, useEffect, useDebugValue } from "react";

// μ»€μŠ€ν…€ ν›…: μ‚¬μš©μž 데이터λ₯Ό κ°€μ Έμ˜€λŠ” ν›…
function useUser(userId) {
  const [user, setUser] = useState(null);

  useEffect(() => {
    // μ‚¬μš©μž 데이터λ₯Ό κ°€μ Έμ˜€λŠ” 비동기 ν•¨μˆ˜
    fetch(`https://jsonplaceholder.typicode.com/users/${userId}`)
      .then((response) => response.json())
      .then((data) => setUser(data));
  }, [userId]);

  // useDebugValueλ₯Ό μ‚¬μš©ν•΄ React DevTools에 ν‘œμ‹œν•  κ°’ μ„€μ •
  useDebugValue(user ? `User: ${user.name}` : "Loading...");

  return user;
}

// μ»΄ν¬λ„ŒνŠΈ
function UserProfile({ userId }) {
  const user = useUser(userId); // μ»€μŠ€ν…€ ν›… μ‚¬μš©

  return (
    <div>
      {user ? (
        <p>μ‚¬μš©μž 이름: {user.name}</p>
      ) : (
        <p>μ‚¬μš©μž 정보λ₯Ό λΆˆλŸ¬μ˜€λŠ” 쀑...</p>
      )}
    </div>
  );
}

export default UserProfile;

 

πŸ” μ½”λ“œμ—μ„œ 무슨 일이 μΌμ–΄λ‚ κΉŒ?

  1. μ»€μŠ€ν…€ ν›… useUser
    • μ‚¬μš©μžμ˜ 데이터λ₯Ό 뢈러였고 useState둜 μƒνƒœλ₯Ό κ΄€λ¦¬ν•΄μš”.
  2. useDebugValue
    • React 개발자 도ꡬ에 ν˜„μž¬ μ‚¬μš©μž μ •λ³΄μ˜ μƒνƒœλ₯Ό ν‘œμ‹œν•΄μ€˜μš”.
    • userκ°€ μžˆμ„ λ•ŒλŠ” User: μ‚¬μš©μž 이름,
      아직 데이터λ₯Ό κ°€μ Έμ˜€λŠ” 쀑이면 Loading... 라고 ν‘œμ‹œλ©λ‹ˆλ‹€.
  3. React 개발자 λ„κ΅¬μ—μ„œ ν™•μΈν•˜κΈ°
    • React DevToolsλ₯Ό 열어보면 useUser 훅이 μ–΄λ–€ 값을 λ°˜ν™˜ν•˜λŠ”μ§€ μ‰½κ²Œ 확인할 수 μžˆμ–΄μš”.
    • 디버깅이 훨씬 κ°„νŽΈν•΄μ§€κ² μ£ ? 😊

 

πŸš€ μ™œ μ‚¬μš©ν• κΉŒ?

  1. μ»€μŠ€ν…€ 훅이 λ§Žμ•„μ§ˆμˆ˜λ‘ μ–΄λ–€ 훅이 μ–΄λ–€ 데이터λ₯Ό λ°˜ν™˜ν•˜λŠ”μ§€ νŒŒμ•…ν•˜κΈ° μ–΄λ €μ›Œμ Έμš”.
  2. React 개발자 도ꡬ에 ν˜„μž¬ ν›…μ˜ μƒνƒœλ₯Ό λͺ…ν™•ν•˜κ²Œ ν‘œμ‹œν•΄μ„œ 디버깅 μ‹œκ°„μ„ μ€„μ—¬μ€˜μš”.

 

🌟 ν•œ 쀄 μš”μ•½

useDebugValueλŠ” μ»€μŠ€ν…€ ν›…μ˜ 값을 React 개발자 도ꡬ에 ν‘œμ‹œν•΄μ£ΌλŠ” λ„κ΅¬μ˜ˆμš”. 디버깅할 λ•Œ μ•„μ£Ό μœ μš©ν•΄μš”!

728x90
λ°˜μ‘ν˜•

'web > react hook' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

useEffect  (1) 2024.12.14
useDeferredValue  (0) 2024.12.14
useContext  (0) 2024.12.14
useCallback  (0) 2024.12.14
useActionState  (1) 2024.12.14
곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
Β«   2025/02   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
κΈ€ 보관함
λ°˜μ‘ν˜•
250x250