πŸ“ λ“œλž˜κ·Έ μ•€ λ“œλž ID κ΄€λ ¨ 였λ₯˜ ( κ°œμΈν”„λ‘œμ νŠΈ )

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

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

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

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


Beautiful-dnd λ₯Ό 톡해, λ“œλž˜κ·Έ μ•€ λ“œλžμ„ κ΅¬ν˜„ν•˜μ˜€λ‹€.
Starting Memeber 의 곡간을 각 ν¬μ§€μ…˜ λ³„λ‘œ λ“œλž 곡간과 λ“œλž˜κ·Έ 곡간을 λ§Œλ“€κ³ , Sub Member 의 곡간을 λ“œλž 곡간과 λ“œλž˜κ·Έ 곡간을 λ§Œλ“€μ—ˆλ‹€.

각 곡간에 μœ„μΉ˜ν•œ μ„ μˆ˜λŠ” UID λ₯Ό 톡해 ꡬ별을 ν•˜λ„λ‘ ν•˜μ˜€λ‹€.

Drag N Drop μ»΄ν¬λ„ŒνŠΈ

🌎 DragDropContext : Provider 와 같은 dnd μƒνƒœλ₯Ό μ œκ³΅ν•΄μ£ΌλŠ” μ—­ν• , onDragEnd λ₯Ό 톡해 이벀트 등둝가λŠ₯ ( 빨간색 )
🀏 Droppable : Drop κ°€λŠ₯ν•œ μ˜μ—­ ν‘œμ‹œ ( 검은색 )
πŸ‘Œ Draggable : Drag κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“€μ–΄μ€Œ ( μ΄ˆλ‘μƒ‰ )

μœ„ μ‚¬μ§„μ—μ„œ 쒌츑이 Starting Member 의 각 ν¬μ§€μ…˜μ΄κ³ , 우츑이 Sub Memeber 의 μ˜μ—­μ΄λ‹€.

Sub μ˜μ—­ β†’ UID λ°°μ—΄ ( ex. [12345,123566] )
Starting 각 μ˜μ—­ β†’ position κ³Ό UID 둜 이루어진 객체 ( ex. { position : GK , player : 12345 }

버그 발견

Sub β†’ Starting, Starting β†’ Sub, Sub β†’ Sub 의 κ²½μš°μ—λŠ” λ¬Έμ œμ—†μ΄ λ™μž‘ν•˜μ˜€μœΌλ‚˜, Starting β†’ Starting 으둜 λ™μž‘ν–ˆμ„λ•Œ λ¬Έμ œκ°€ λ°œμƒν–ˆλ‹€.

각 μœ„μΉ˜λ₯Ό Swap ν–ˆμ„λ•Œ, 변경은 λ˜λ‚˜ ν•˜λ‚˜μ˜ μœ„μΉ˜μ—μ„œ μ•„λž˜μ™€ 같은 λ¬Έμ œκ°€ λ°œμƒν•˜μ—¬, 더이상 λ“œλž˜κ·Έκ°€ λ˜μ§€ μ•Šμ•˜λ‹€.

❗️ react-beautiful-dndUnable to find draggable with id

μ‹œλ„ν•œ 방법

  1. Draggable μ»΄ν¬λ„ŒνŠΈλ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•œλ‹€κ³  νŒλ‹¨ν•˜μ—¬, λ‹€λ₯Έ νƒœκ·Έλ₯Ό μ œκ±°ν•΄ λ³΄μ•˜λ‹€ β†’ λ¬Έμ œμ—†μŒ
  2. Draggable ID 문제 확인 β†’ λ¬Έμ œμ—†μŒ
  3. onDragEnd μƒνƒœ 확인 ( result ) β†’ λ¬Έμ œμ—†μŒ
  4. λ Œλ” κ³Όμ • 확인 β†’ 문제발견!

βœ…Β ν•΄κ²°


λ Œλ” κ³Όμ •μ—μ„œ ID κ°’

Draggalbe ID 값은 ν˜„μž¬ μœ„μΉ˜ν•œ μ„ μˆ˜μ˜ UID 둜 μ„€μ • λ˜μ–΄μžˆμ—ˆλ‹€.
Draggable ID κ°€ 123 인 [A] μ»΄ν¬λ„ŒνŠΈλ₯Ό 456 인 [B] μ»΄ν¬λ„ŒνŠΈμ— λ“œλžλœλ‹€κ³  κ°€μ •ν•˜μž.

그럼 과정이 μ•„λž˜μ™€ 같을 것이닀.

[A] λ“œλž˜κ·Έ β†’ [B] μ»΄ν¬λ„ŒνŠΈλ‘œ λ“œλž˜κ·Έ β†’ [A] μ»΄ν¬λ„ŒνŠΈ λ“œλžκ³Ό λ™μ‹œμ— [B] μ»΄ν¬λ„ŒνŠΈ IDλ₯Ό [A] μ»΄ν¬λ„ŒνŠΈμ˜ ID인 123 으둜 λ³€κ²½ -> λ°˜λŒ€λ‘œ [A] μ»΄ν¬λ„ŒνŠΈ ID λ₯Ό 456 으둜 λ³€κ²½

"βœ… [A] μ»΄ν¬λ„ŒνŠΈ λ“œλžκ³Ό λ™μ‹œμ— [B] μ»΄ν¬λ„ŒνŠΈ IDλ₯Ό [A] μ»΄ν¬λ„ŒνŠΈμ˜ ID인 123 으둜 λ³€κ²½" 이 κ³Όμ •μ—μ„œ, [A] μ»΄ν¬λ„ŒνŠΈλ„ ID κ°€ 123 이 되고, [B] μ»΄ν¬λ„ŒνŠΈλ„ 123 이 λœλ‹€.

즉❗️ 같은 ID κ°€ 2κ°œκ°€ μƒκΈ΄λ‹€λŠ” 것이닀.

μ΄λŸ¬λ©΄μ„œ μ—λŸ¬κ°€ λ°œμƒν•˜μ—¬μ„œ, IDλ₯Ό λ™μΌν•˜κ²Œ λ§Œλ“€μ§€ μ•ŠκΈ°μœ„ν•΄
'Positionλͺ…-UID' 둜 해두어 쀑볡을 λ°©μ§€ν•˜μ˜€λ‹€.

πŸ’­Β κ°œμ„ 


  • Squad 에 ν¬ν•¨λ˜μ§€ μ•ŠλŠ” μ„ μˆ˜λ₯Ό ν΄λ¦­ν•˜μ—¬, DetailPage 둜 이동을 ν•˜λ©΄ μ •μƒμ μœΌλ‘œ λ Œλ”κ°€ λ˜λŠ”λ°, μƒνƒœκ΄€λ¦¬ Squad 에 ν¬ν•¨λ˜κ±°λ‚˜, DB에 μ €μž₯된 Squad 에 ν¬ν•¨λœ μ„ μˆ˜λ₯Ό ν΄λ¦­ν•˜μ—¬ Detail Page 둜 μ΄λ™ν•˜λ©΄ "Warning: Cannot update a component (HotReload) while rendering a different component (FieldPlayerMainStat)" μ—λŸ¬κ°€ λ°œμƒν•˜κ³  μžˆλ‹€.
profile
μ£Όλ‹ˆμ–΄ ν”„λ‘ νŠΈμ—”λ“œ 개발자 이광렬 μž…λ‹ˆλ‹€ 🌸

0개의 λŒ“κΈ€