header-img
Info :
728x90

 

μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ ν•˜λ˜ "메뉴관리"의 κ°œλ…μ„ 웹에도 λ„μž…ν•˜λŠ” 것이 λͺ©μ μ΄μ—ˆμŒ.

μ‚¬μš©μž(κ΄€λ¦¬μž)λŠ” ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ 메뉴와 κ΄€λ ¨λœ 데이터λ₯Ό DB에 insert ν•  수 있고,

μ΄λ ‡κ²Œ λ§Œλ“€μ–΄μ§„ Data 둜 λΌμš°νŒ…μ—λ„ 적용되고, 메뉴바에도 μ μš©λ˜λŠ”.. 그런 ν˜•νƒœκ°€ μ΅œμ’…μ΄μ—ˆμŒ.

 

React 생λͺ…μ£ΌκΈ° νŠΉμ„± 상 μ–΄λ ΅λ‹€λŠ” 닡변을 λ°›κΈ°λ§Œ ν•˜λ˜ μ°°λ‚˜..

μ • μ•ˆλ˜λ©΄ 이 λΌμš°νŒ… μ‹œμŠ€ν…œμ„ μ •λ¦¬ν•˜κ±°λ‚˜ μ‰½κ²Œ λ§Œλ“€μ–΄λ³΄μžλŠ” 마음으둜 μ‹œμž‘ν•˜κ²Œ λ˜μ—ˆλ‹€.

 

첫 아이디어

 

λŠ” react-router-dom v5 λ¬Έλ²•μœΌλ‘œ κ΅¬ν˜„ν•œ μ•„λž˜μ˜ λͺ¨μŠ΅

2023.11.03 - [FRONTEND/React] - React :: (Next.js μ‚¬μš© 없이) ν•΄λ‹Ή ν΄λ”μ˜ νŒŒμΌμ„ 동적 λΌμš°νŒ….

 

μ•„λ¬΄λž˜λ„ κ°€μž₯ μ΅œμ‹  버전을 μ¨μ•Όν•œλ‹€λŠ” 생각도 μžˆμ—ˆκ³ , μ™Έμ£Όμ—…μ²΄μ—μ„œ λ§Œλ“€μ–΄μ€€ λ‘œμ§μ„ 변경없이 μ‚¬μš©ν•˜λ €λ©΄ λΌμš°νŒ…μ— props λ₯Ό λ„˜κ²¨μ€„ 수 μžˆμ–΄μ•Ό ν–ˆλ‹€. μœ„μ˜ ν˜•νƒœλ‘œλŠ” μ›ν•˜λŠ” propsλ₯Ό λ™μ μœΌλ‘œ 넣어쀄 μˆ˜λ„ μ—†κ³ , λ‚˜μ€‘μ— μ–΄λ–€ λ²„μ „μœΌλ‘œ μΈν•œ μ΄μŠˆκ°€ ν„°μ§ˆ μ‹œμ— ν•΄κ²°ν•  μˆ˜κ°€ μ—†λŠ”... 그런 μƒν™©μ΄μ—ˆμŒ.

 

κ·Έλƒ₯ μœ„μ˜ μ½”λ“œλŠ” REACT 생λͺ…μ£ΌκΈ°λ‘œλ„ μš°λ¦¬κ°€ λ§ν•˜λŠ” 메뉴관리 ν˜•μ‹μ˜ 동적 λΌμš°νŒ…μ΄ "κ°€λŠ₯"ν•˜λ‹€λŠ” 것을 μž…μ¦ν•˜λŠ” μš©λ„μ˜€μ„ 뿐...

μ—¬κΈ°μ„œ 아쉬움을 λŠκΌˆλ˜ν„°λΌ 머리 μ†μ—μ„œ 혼자 λ‘œμ§μ„ κ·Έλ €λ΄€λ‹€.

 

κ³ λ―Ό

 

 

μ£Όμ„μœΌλ‘œ λ•μ§€λ•μ§€ν•΄μ§€λŠ” λ‚˜μ˜ μ½”λ“œ...

 

json(DBμ—μ„œ λ°›μ•„μ˜¨ 데이터)에 μžˆλŠ” 것듀을

1. λ™μ μœΌλ‘œ import λ°›μ•„μ™€μ„œ
2. map λŒλ €μ„œ λΌμš°νŒ…λ§Œ μž˜ν•΄μ£Όλ©΄ λ˜μ§€ μ•Šμ„κΉŒ?

 

λΌλŠ” κ°œλ…μ„ μ μš©ν•˜κΈ° μœ„ν•΄ 고민을 ν•΄λ΄€λ‹€.

 

λ‚˜μ—κ²Œ μž₯벽은 1. λ™μ μœΌλ‘œ import ν•˜λŠ” κ²ƒμ΄μ—ˆμœΌλ©°...

이것을 2. routing ν•˜λŠ” μͺ½μ— </> 의 ν˜•νƒœλ‘œ 문법에 맞게 집어 λ„£λŠ” κ²ƒμ΄μ—ˆλ‹€...

 

사싀상 거의 μ „λΆ€μ˜€λ‹€κ³  보면 됨. 문법이 νž˜λ“€λ‹€ ...

 

그리고 문법 이슈 해결을 μœ„ν•΄ stackoverflow λ₯Ό 뒀지기 μ‹œμž‘ν–ˆκ³ ..

μˆ˜λ§Žμ€ κ²Œμ‹œκΈ€ ν˜•νƒœμ˜ λ™μ λΌμš°νŒ…(포맷은 κ°™κ³  λ°μ΄ν„°λ§Œ λ°”λ€ŒλŠ”..)을 μ•Œμ•„μ„œ κ±ΈλŸ¬λ‚΄λ©°... 문법을 μ°Ύμ•„λ‚΄μ—ˆλ‹€.

 

κ²°κ³Ό

 

κ·Έλ¦¬ν•˜μ—¬ μ„±κ³΅ν•œ μ•„λž˜μ˜ μ½”λ“œ.

λ§Œμ•½μ— Route 에 props둜 무언가λ₯Ό 더 λ„£μ–΄μ£Όκ³  μ‹Άλ‹€κ³  ν•˜λ©΄

DBμ—μ„œ λ°›μ•„μ˜€λŠ” json νŒŒμΌμ— μΆ”κ°€ν•˜κ³  

 

return (<Route key={menuItem.id} path={menuItem.url} element={<Page />} />);

 

μœ„μ˜ 뢀뢄에 props λ₯Ό 지정해주면 λœλ‹€.

 

 

 

예제 μ½”λ“œ μ²¨λΆ€λ‘œ κ²Œμ‹œκΈ€μ„ 끝내보도둝 ν•˜κ² λ‹€.

 

 

μΆ”ν›„ κ°œμ„ μ 

 

json νŒŒμΌμ„ λ°›μ•„μ™€μ„œ λŒλ¦¬λŠ” κ²ƒμ΄λ‹€λ³΄λ‹ˆ,

λ‚΄κ°€ μ§€μ •ν•œ λ³€μˆ˜ 값이 undefined 일 λ•Œλ„ 이 λΌμš°νŒ…μ΄ λŒμ•„μ„œ routing을 찾을 수 μ—†λ‹€λŠ” μ—λŸ¬κ°€ μ°ν˜€λ†“κ³ , λΌμš°νŒ…μ„ μ •ν™•ν•œ μž₯μ†Œλ‘œ ν•΄μ£Όκ²Œ λ˜λŠ”λ°.. μ΄κ²ƒλ§Œ κ°œμ„ ν•˜λ©΄ μΆ©λΆ„νžˆ λ³΅λΆ™ν•΄μ„œ 써도 λ λ§Œν•œ μ½”λ“œκ°€ 될 것 κ°™λ‹€.

 

 

 

γ…Žγ…Žγ…Žγ…Ž

 

 

 

728x90
더보기
FRONTEND/React