πŸ“ Rendering 쀑 μƒνƒœ λ³€κ²½ μ—λŸ¬ ( κ°œμΈν”„λ‘œμ νŠΈ )

10_2pangΒ·2023λ…„ 9μ›” 16일
0

βš½οΈνŠΈλŸ¬λΈ”μŠˆνŒ…

λͺ©λ‘ 보기
93/94
post-thumbnail

πŸ‘¨β€πŸ’»Β μ‚¬κ±΄


Squad 에 ν¬ν•¨λ˜μ§€ μ•ŠλŠ” μ„ μˆ˜λ₯Ό ν΄λ¦­ν•˜μ—¬, DetailPage 둜 이동을 ν•˜λ©΄ μ •μƒμ μœΌλ‘œ λ Œλ”κ°€ λ˜λŠ”λ°, μƒνƒœκ΄€λ¦¬ Squad 에 ν¬ν•¨λ˜κ±°λ‚˜, DB에 μ €μž₯된 Squad 에 ν¬ν•¨λœ μ„ μˆ˜λ₯Ό ν΄λ¦­ν•˜μ—¬ Detail Page 둜 μ΄λ™ν•˜λ©΄ μ•„λž˜μ™€ 같은 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

"Warning: Cannot update a component (HotReload) while rendering a different component (FieldPlayerMainStat)" μ—λŸ¬κ°€ λ°œμƒν•˜κ³  μžˆλ‹€

ν•΄λ‹Ή κ²½κ³  λ©”μ‹œμ§€λŠ” React μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§ 도쀑에 λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈμ˜ μƒνƒœλ₯Ό λ³€κ²½ν•˜λ €κ³  ν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€.

μ‹œλ„ν•œ 방법

  1. FieldPlayerMainStat μ»΄ν¬λ„ŒνŠΈ 이외에도 κ΄€λ ¨λœ μ»΄ν¬λ„ŒνŠΈ 쀑 μƒνƒœκ΄€λ¦¬λ₯Ό ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό νŒŒμ•… β†’ setState ν˜Ήμ€ μ „μ—­ μƒνƒœκ΄€λ¦¬ μ‚¬μš© X
  2. react-query λ₯Ό μ‚¬μš©ν•˜μ—¬, 각 μ»΄ν¬λ„ŒνŠΈμ—μ„œ μΊμ‹±λœ 데이터λ₯Ό λΆˆλŸ¬μ˜€λŠ”λ° Data κ°€ 잘 λ„˜μ–΄μ˜€λŠ”μ§€ 확인 β†’ 각 μ»΄ν¬λ„ŒνŠΈ μ΄μƒμ—†μŒ
  3. Link 의 href 확인 β†’ μ΄μƒμ—†μŒ
  4. μž¬λ Œλ”λ§ ν•˜λ©΄ μ •μƒμ μœΌλ‘œ λ Œλ” β†’ react-query 의 refetch ν•¨μˆ˜ μ‚¬μš© β†’ λ³€ν™”μ—†μŒ

μ„œλ²„μ—μ„œ νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨

μƒˆλ‘œκ³ μΉ¨μ„ ν•˜λ©΄, μ •μƒμ μœΌλ‘œ λ Œλ”λ˜λŠ”κ²ƒμ„ ν™•μΈν•˜κ³  μ•„λž˜μ™€ 같은 방법을 μ‚¬μš©

onClick={() => window.location.href = /squad/player/${String(user.UID)}}

νŽ˜μ΄μ§€ 자체λ₯Ό μƒˆλ‘œκ³ μΉ¨ ν•˜μ—¬, ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œκ°€ μ•„λ‹Œ μ„œλ²„μ—μ„œ νŽ˜μ΄μ§€λ₯Ό 리 λ‘œλ“œ ν•˜λŠ” 방식을 μ‚¬μš©

❗️ 문제점 : SPA 의 μž₯점인 λΉ λ₯ΈνŽ˜μ΄μ§€ μ „ν™˜μ˜ μž₯점 μžƒκ²Œλ¨

βœ…Β ν•΄κ²°


μƒκ°ν•΄λ³΄λ‹ˆ, react-query λ₯Ό 톡해 Fetch ν•œ 데이터λ₯Ό μƒνƒœκ΄€λ¦¬ ν•˜κ³ μžˆμ—ˆλ‹€.

Props λ“œλ¦΄λ§ λŒ€μ‹ , 각 μ»΄ν¬λ„ŒνŠΈμ—μ„œ λ™μΌν•œ Query key λ₯Ό 톡해 μΊμ‹±λœ 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” λ°©μ•ˆμ„ μ„ νƒν•˜μ—¬ μ‚¬μš©μ€‘μ΄μ˜€λ‹€.

ν˜Ήμ‹œ... 이 μƒνƒœκ΄€λ¦¬ λ•Œλ¬Έμ— λ¬Έμ œκ°€ λ°œμƒν•œκ²Œ μ•„λ‹Œκ°€ ν•˜μ—¬, 각 μ»΄ν¬λ„ŒνŠΈμ— Props 둜 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 방식을 μ§„ν–‰ν–ˆλ‹€.

결과적으둜... μ•„μ£Ό μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ˜€λ‹€.

Props 전달도 1번만 거쳐가기 λ•Œλ¬Έμ— λ¬Έμ œμ—†λ‹€κ³  νŒλ‹¨ν•˜μ—¬, μ „λΆ€ λ³€κ²½ν•˜μ˜€λ‹€.

πŸ’­Β κ°œμ„ 


  • Squad 에 ν¬ν•¨λœ μ„ μˆ˜λ₯Ό μ œκ±°ν• μˆ˜μžˆλŠ” μƒνƒœκ΄€λ¦¬λ₯Ό μΆ”κ°€ν•΄μ•Όν•œλ‹€.
  • λͺ¨λ“  κΈ°λŠ₯을 계속 μ‚¬μš©ν•˜μ—¬, 이번과 같은 μ—λŸ¬λ₯Ό μ°Ύμ•„μ•Όν•œλ‹€.
  • μ΅œμ’…μ μœΌλ‘œ μΌμš”μΌμ— dev λ°°ν¬ν•˜κ³ , ν…ŒμŠ€νŠΈ ν•΄λ³Ό μ˜ˆμ •μ΄λ‹€.
profile
μ£Όλ‹ˆμ–΄ ν”„λ‘ νŠΈμ—”λ“œ 개발자 이광렬 μž…λ‹ˆλ‹€ 🌸

0개의 λŒ“κΈ€