๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ115

[React] ๋ฆฌ์•กํŠธ์˜ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ, ๊ทผ๋ฐ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ Hook์€ ๋˜ ๋ญ”๋ฐ? ๋ฆฌ์•กํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ Hook์— ๋Œ€ํ•ด ๋ชจ๋ฅด๋‹ˆํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์ด ์–ด๋ ค์›Œ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.์ด ๋‘˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! 1. ์ƒ๋ช…์ฃผ๊ธฐ๋ผ์ดํ”„ ์‚ฌ์ดํด์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์†Œ๋ฉธ๋  ๋•Œ๊นŒ์ง€ ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋งํ•œ๋‹ค.๋ผ์ดํ”„ ์‚ฌ์ดํด์—๋Š” mounting(์ƒ์„ฑ) - updating(์—…๋ฐ์ดํŠธ) - unmounting(์ œ๊ฑฐ)์ด ์žˆ์œผ๋ฉฐ, UI๋ฅผ ํ™”๋ฉด์— ๋‚ด๋ณด๋‚ด๊ณ  ๋‹ค๋ฅธ UI๋กœ ๋ณด์ด๊ฒŒ ํ•˜๊ณ , ํ˜„์žฌ ๋ณด์ด๋Š” UI๋ฅผ ํ™”๋ฉด์—์„œ ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์„ ๊ฐ€์ง„๋‹ค.์ด ๊ณผ์ • ์•ˆ์—๋Š” ํŠน์ • ์‹œ์ ์— ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.์ œ๋Œ€๋กœ ๋œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฉ”์„œ๋“œ๋“ค์ด ํ•„์š”ํ•œ ์ˆœ๊ฐ„์— ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•œ๋‹ค. - ๋ฆฌ์•กํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด [React] ๋ฆฌ์•กํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด๋ผ์ดํ”„ ์‚ฌ์ดํด = ์ƒ๋ช… ์ฃผ๊ธฐvelog.io 2. ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ .. 2025. 12. 30.
[Spring, React] useEffect๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ์ €์žฅ๋œ ๊ณ ๊ฐ์ •๋ณด๊ฐ€ ๋ณด์ด๋„๋ก ํŽ˜์ด์ง€์— ๋ฐ˜์˜ํ•ด๋ณด์ž ๊ณ ๊ฐ ๋ช…๋‹จ ํ™”๋ฉด์„ ๋„์šฐ๋ฉด DB์— ์ €์žฅ๋œ ๋ช…๋‹จ์„ ๊ฐ€์ ธ์™€ ๋ณด์—ฌ์ค˜์•ผํ•œ๋‹ค.๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ํƒญ์— ๋“ค์–ด์˜ค๋ฉดDB์— ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์–ด๋„ ํ™”๋ฉด์— ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•œ๋‹ค.๊ทธ๋ž˜์„œ ์ด ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. 1. ํ™˜๊ฒฝ์„ค์ •ํ”„๋ก ํŠธ์—”๋“œ = React + Vite +WebStorm๋ฐฑ์—”๋“œ = Spring + IntelliJDB = MySQL + MySQLWorkbench 2. ๋ฌธ์ œ์ ํ™”๋ฉดsori๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ €์žฅํ–ˆ๋‹ค. MySQLWorkbench๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์ œ๋Œ€๋กœ ์ €์žฅ๋˜์–ด์žˆ๋‹ค. ์ด์ œ ๋‹ค์‹œ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ–ˆ๋‹ค. ๋“ฑ๋ก๋๋˜ sori๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ MySQLWorkbench์—๋Š” ์ž˜ ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์˜€๋‹ค. ์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๊ฑธ๊นŒ? ์›๋ž˜ ์ฝ”๋“œ// ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ๊ณ ๊ฐ ๋ชฉ๋กconst [rows.. 2025. 12. 18.
[Spring, React, Vite] ์Šคํ”„๋ง๊ณผ ๋ฆฌ์•กํŠธ ์—ฐ๊ฒฐํ•˜๊ธฐ_ React์—์„œ CORS ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ Spring์—์„œ CORS ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•, Security ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์Šคํ”„๋ง๊ณผ ๋ฆฌ์•กํŠธ๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•  ๊ฒƒ์ด๋‹ค.๊ฒ€์ƒ‰์„ ํ•˜๋ฉด React์—์„œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋งŽ์ด ๋‚˜์˜จ๋‹ค.๊ทธ๋Ÿฌ๋‚˜! ๋‚˜๋Š” Spring์—์„œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ถ๊ธˆํ•˜๋‹ค.๊ทธ๋ž˜์„œ ๋‘˜ ๋‹ค ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. 1. ํ™˜๊ฒฝํ”„๋ก ํŠธ์—”๋“œ → React + Vite React๋ž‘ Spring ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋ณดํ†ต CRA ๋ฐฉ์‹์ด ๋งŽ์ด ๋œฌ๋‹ค. CRA๋Š” Create React App์œผ๋กœ ์—ฌ๋Ÿฌ ๋„๊ตฌ๋ฅผ ํ•˜๋‚˜์˜ ๊ถŒ์žฅ ์„ค์ •์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ๊ธฐ์กด์— ๊ฐ–๊ณ  ์žˆ๋˜ React์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™์ง„ ์•Š์€๋ฐ, ๊ณ ์„ฑ๋Šฅ ํ”„๋กœ๋•์…˜ ์•ฑ ๊ตฌ์ถ•์„ ์–ด๋ ต๊ฒŒ ํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ์ œํ•œ์ด ์žˆ์–ด์„œ CRA ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•˜๊ณ  ๊ธฐ์กด ์•ฑ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ Vite, Parcel, RSBuild ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ถŒ์žฅ.. 2025. 12. 17.
[Spring, React] ๐Ÿ‘‘ VIP ์ดˆ๋Œ€์žฅ ๋งŒ๋“ค๊ธฐ ๐Ÿ’Œ ์–ด๋””๊นŒ์ง€ ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ. 1. ํ™”๋ฉด ๊ณ ๊ฐ ๊ด€๋ฆฌ์ž 2. ์ ๊ฒ€ํ•˜๊ธฐ ๊ฐ‘์ž๊ธฐ ๊ฒฝ๋ฏธํ•œ ์ˆ˜์ˆ ์„ ๋ฐ›๊ฒŒ ๋˜์–ด 3์ฃผ๊ฐ„ ์‰ฌ์—ˆ๋‹ค. ์ค‘๊ฐ„์ค‘๊ฐ„ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •์€ ํ–ˆ์ง€๋งŒ, ์ˆ˜์ˆ  ๋ถ€์œ„ ๋•Œ๋ฌธ์— ์•‰์•„์žˆ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์„œ ๊ฑฐ์˜ ๋ชปํ–ˆ๊ณ  ์ตœ๊ทผ์— 3์‹œ๊ฐ„ ์ •๋„ ํ•œ ๊ฒŒ ๋‹ค์˜€๋‹ค. ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ ์‚ด๋„ ์ž˜ ์•ˆ ๋ถ™์–ด์„œ... ๊ณ„์† ํ”ผ๋‚˜๊ณ  ๋‚จ๋“ค๋ณด๋‹ค ์ผ์ฃผ์ผ ์ •๋„ ๋” ์น˜๋ฃŒ๋ฅผ ๋ฐ›์•„์•ผ ํ–ˆ๋‹ค. ์•„๋ฌดํŠผ ์ด์ œ ๊ฑฐ์˜ ๋‹ค ๋‚˜์•˜๋‹ค๊ณ  ์ž๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค!!! ๋ฉˆ์ท„๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ๊ฒŒ ๋ฌด์—‡์ธ์ง€, ๊ณ ์ณ์•ผ ํ•  ๊ฒŒ ๋ญ์˜€๋Š”์ง€ ๋ณตํ•˜๋ ค ํ•œ๋‹ค! ํ”„๋ก ํŠธ๋ž‘ ๋ฐฑ์—”๋“œ ์—ฐ๊ฒฐ์•„์ง ๋ฐฑ์—”๋“œ๋ž‘ ํ”„๋ก ํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ๋ช…๋‹จ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜, ์‚ญ์ œํ•˜๋Š” ๋™์ž‘์„ ๋ฐฑ์—”๋“œ(์Šคํ”„๋ง)์—์„œ ์ด๋ค„์ง€๋„๋ก ํ•  ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ํ•ด๋ณธ ๊ฒฐ๊ณผ Vue๋ž‘ ์ƒ๊ฐ๋ณด๋‹ค ๋‹ฌ๋ผ์„œ ๋„ˆ๋ฌด ๋ฌด์ž‘.. 2025. 11. 26.
[React] React๋ž€? JSX ๋ฌธ๋ฒ• ์ •๋ฆฌํ•˜๊ธฐ React๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋ฉฐ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„์•ผ ํ• JSX ๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•ด๋ณด์ž! 1. ๋ฆฌ์•กํŠธ(React)๋ž€?SPA๋ฅผ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, 2013๋…„ ๋ฉ”ํƒ€(๊ตฌ ํŽ˜์ด์Šค๋ถ)์—์„œ ๊ณต๊ฐœํ–ˆ๋‹ค.๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ ๋ฌถ์Œ์„ ๋ชจ์•„๋†“์€ ๊ฒƒ์œผ๋กœ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ํŠน์ • ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋„๊ตฌ์ด๋‹ค.SPA(Single Page Application, ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)๋Š” HTML, CSS, JavsScript๋ฅผ ์ตœ์ดˆ 1ํšŒ๋งŒ ๋กœ๋“œํ•˜๊ณ , ์ดํ›„์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ํ†ตํ•ด DOM ๋˜๋Š” HTML ํŒŒ์ผ์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. (๋น ๋ฅด๋‹ค)๊ณผ๊ฑฐ์—๋Š” ํŽ˜์ด์ง€ ์ด๋™์„ ํ•˜๊ฒŒ ๋˜๋ฉด HTML, CSS, Javascript ํŒŒ์ผ์„ ์„œ๋ฒ„์™€ ์ฃผ๊ณ ๋ฐ›๋Š” ํ†ต์‹ ์„ ํ•ด์•ผ.. 2025. 10. 23.
[Spring, React] ๐Ÿ‘‘ VIP ์ดˆ๋Œ€์žฅ ๋งŒ๋“ค๊ธฐ ๐Ÿ’Œ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ๊ตฌ์ƒํ•ด๋ณด๊ธฐ. ์—ฐ๋ง์„ ๋งž์ดํ•˜์—ฌVIP ๋“ฑ๊ธ‰ ์ด์ƒ ๊ณ ๊ฐ๋ถ„๋“ค๊ป˜์ดˆ๋Œ€์žฅ์„ ๋ณด๋‚ด๋ ค๊ณ  ํ•œ๋‹ค!์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ๊ตฌ์ƒํ•ด ๋ณด์ž. 1. ๊ตฌ์ƒํ™”๋ฉด - ๊ณ ๊ฐ๊ณ ๊ฐ๋‹˜์ด ์ ‘์†ํ•  ํ™”๋ฉด๊ณ ๊ฐ์€ ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๋ฏธ๋ฆฌ ๋ฐ›์€ ๋น„๋ฐ€๋ฒˆํ˜ธ 4์ž๋ฆฌ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ณ ๊ฐ์˜ ๋“ฑ๊ธ‰์— ๋งž๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค. ๋“ฑ๊ธ‰์€ ์ด 3๊ฐœ๋กœ ๋˜์–ด์žˆ๋‹ค. VIP, VVIP, DIAMOND ์ฝ”๋“œ ์„ฑ๊ณต ํ™”๋ฉด๊ณ ๊ฐ์ด ์ œ๋Œ€๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ, ๊ณ ๊ฐ์˜ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋ฉด์„œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค. ์ฝ”๋“œ ์‹คํŒจ ํ™”๋ฉด์ฝ”๋“œ์— ์‹คํŒจํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ๋‹ฌ๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ํ•˜๋‹จ์— ๋ฐฐ์น˜๋œ๋‹ค. - ๊ด€๋ฆฌ์ž๋กœ๊ทธ์ธ ํ™”๋ฉดid์— ๋”ฐ๋ผ ๊ด€๋ฆฌ์ž์˜ ๊ถŒํ•œ์ด ๋‹ฌ๋ผ์ง„๋‹ค. VIP ๋ช…๋‹จ ๊ด€๋ฆฌ ์˜ˆ์‹œ ๋ช…๋‹จ์˜ ๊ฐœ์ˆ˜๋Š” 30๋ช…์œผ๋กœ ์žก์•˜์œผ๋ฉฐ VIP 10๋ช…, VVIP 10๋ช…, DIAMOND 10๋ช…์ด ๋œ๋‹ค. ๋ช…๋‹จ ์ถ”๊ฐ€add ๋ฒ„.. 2025. 10. 21.