๋ชฉ๋ก๐ŸŽจFrontEnd/React (13)

Input + Output = True

๋ฆฌ์•กํŠธ ๊ฐ€์ƒ๋” / ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๋ฐฉ์‹

๐Ÿ˜Ž๋ฆฌ์•กํŠธ ๊ฐ€์ƒ๋” / ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๋ฐฉ์‹ ๋ฆฌ์•กํŠธ๋Š” ๊ฐ€์ƒ๋”(Virtual DOM)์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ€์ƒ๋”์€ ์‹ค์ œ DOM์„ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์œผ๋กœ, ์‹ค์ œ DOM๊ณผ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. DOM (Document Object Model ๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ) ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ์›น ํŽ˜์ด์ง€๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ„์ธตํ™”์‹œ์ผœ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋งŒ๋“  ๊ฐ์ฒด(Object) ๋ชจ๋ธ DOM์€ root(๋ฟŒ๋ฆฌ) node์—์„œ ์‹œ์ž‘๋œ๋‹ค. ํŠธ๋ฆฌํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์œ„์ชฝ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ(parent) ๋…ธ๋“œ, ์•„๋žซ์ชฝ ๋…ธ๋“œ๋ฅผ ์ž์‹(child) ๋…ธ๋“œ๋ผ๊ณ  ํ•˜๋ฉฐ root node๋Š” ๊ฐ€์žฅ ์œ„์—์„œ ์‹œ์ž‘๋˜๋Š” node๋กœ parent(๋ถ€๋ชจ)๊ฐ€ ์—†๋Š” node์ด๊ณ , ์ด๋ฅผ ๋ฟŒ๋ฆฌ(root) node ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ๋ฐ˜๋Œ€๋กœ, children(์ž์‹)์ด ์—†๋Š” node๋ฅผ ์žŽ(leaf) node๋ผ๊ณ ๋„ ..

๐ŸŽจFrontEnd/React 2023. 3. 21. 22:04
๋™๊ธฐ ๋น„๋™๊ธฐ / ์„œ๋ฒ„ ํ†ต์‹  (feat. react axios)

๐Ÿ˜Ž ๋™๊ธฐ ๋น„๋™๊ธฐ / ์„œ๋ฒ„ ํ†ต์‹  (feat. react axios) โœ… ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ 1. ๋™๊ธฐ (synchronous: ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š”) ์š”์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๋Š” ์˜๋ฏธ. ์š”์ฒญ์„ ํ•˜๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋”๋ผ๋„ ์š”์ฒญํ•œ ์ž๋ฆฌ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค. ์žฅ์  : ์„ค๊ณ„๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด๋‹ค. ๋‹จ์  : ์ด๋ฒˆ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—… ์ง„ํ–‰์„ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค. 2. ๋น„๋™๊ธฐ (Asynchronous: ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”) ์š”์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ. ์š”์ฒญํ•œ ๊ทธ ์ž๋ฆฌ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์Œ. ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์„œ๋ฒ„์™€์˜ ํ†ต์‹  ์ ˆ์ฐจ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์žฅ์  : ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์  : ๋™๊ธฐ์‹๋ณด๋‹ค ์„ค๊ณ„๊ฐ€ ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ๋™๊ธฐ:..

๐ŸŽจFrontEnd/React 2023. 1. 15. 17:26
๋ฆฌ์•กํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด(ํด๋ž˜์Šคํ˜• vs ํ•จ์ˆ˜ํ˜•), React hooks

๐Ÿ˜Ž ๋ผ์ดํ”„์‚ฌ์ดํด(ํด๋ž˜์Šคํ˜• vs ํ•จ์ˆ˜ํ˜•), React hooks โœ… ๋ผ์ดํ”„์‚ฌ์ดํด(ํด๋ž˜์Šคํ˜• vs ํ•จ์ˆ˜ํ˜•) ๋ผ์ดํ”„์‚ฌ์ดํด(LifeCycle) ๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋ผ์ดํ”„์‚ฌ์ดํด(์ƒ๋ช…์ฃผ๊ธฐ)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ผ์ดํ”„์‚ฌ์ดํด์€ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์—…๋ฐ์ดํŠธ, ๊ทธ๋ฆฌ๊ณ  ์†Œ๋ฉธ(์ œ๊ฑฐ)๋˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ : ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ์‹œ์ ์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ : ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์•กํŠธ ํ›…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค. ๋ผ์ดํ”„์‚ฌ์ดํด์€ ํฌ๊ฒŒ ์„ธ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ์ง„๋‹ค. ์ƒ์„ฑ(Mount), ์—…๋ฐ์ดํŠธ(Update), ์ œ๊ฑฐ(Unmount) Mount: ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„ Update: ์•„๋ž˜ 5๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ์ธํ•ด ์—…๋ฐ์ดํŠธ ๋œ๋‹ค(๋ฆฌ..

๐ŸŽจFrontEnd/React 2023. 1. 8. 18:08
redux persist ์‚ฌ์šฉ๋ฒ• (๋ฆฌ๋•์Šค ์ƒˆ๋กœ๊ณ ์นจ ๋ฐ์ดํ„ฐ ์œ ์ง€)

๐Ÿ˜Ž redux-persist ์‚ฌ์šฉ๋ฒ• โœ… redux persist๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ? ๋ฆฌ๋•์Šค์˜ store๋Š” ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์ด ๋  ๋•Œ state ๊ฐ’์ด ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ๋งŒ์•ฝ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ state ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” reducer state๋ฅผ LocalStorage ๋˜๋Š” SessionStorage์— ์ €์žฅํ•ด์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ ์ €์žฅ๊ณต๊ฐ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ redux์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ redux-persist๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โœ… redux persist ์„ธํŒ… ๋ฐฉ๋ฒ• redux๊ฐ€ ์ด๋ฏธ ์„ธํŒ…๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๊ณ  ์ง„ํ–‰ redux persist ์„ค์น˜ yarn add redux-persist reducer์— persist store ์ •์˜ //configStore..

๐ŸŽจFrontEnd/React 2023. 1. 5. 00:17
React - redux ์ดํ•ดํ•˜๊ธฐ (๋ฆฌ๋•์Šค ๊ฐœ๋…์ •๋ฆฌ)

๐Ÿ˜Ž React - ๋ฆฌ๋•์Šค(redux) ์ดํ•ดํ•˜๊ธฐ โœ… Redux๋ž€? Redux ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ƒํƒœ๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ๋งŒ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ทœ์น™๊ณผ ํ•จ๊ป˜ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํƒœ์— ๋Œ€ํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. -redux ๊ณต์‹๋ฌธ์„œ- ํ•œ ๋งˆ๋””๋กœ ๋ฆฌ๋•์Šค๋Š” "state ์‚ฌ์šฉ์„ ๋” ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ"๋ผ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค Local State ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด A ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์žˆ๋Š” data๋ผ๋Š” state๋ฅผ(Local State) B ํ˜น์€ C ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด A ์ปดํฌ๋„ŒํŠธ์—์„œ B๋‚˜ C ํ˜น์€ B๋ฅผ ํ†ตํ•ด์„œ C๋กœ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค ๋งŒ์•ฝ ๊ทธ depth๊ฐ€ ๊นŠ๋‹ค๋ฉด? ์ด๋ฏธ์ง€(Without Redux..

๐ŸŽจFrontEnd/React 2023. 1. 4. 11:36
React - State, Props, ๋ฆฌ๋ Œ๋”๋ง ๋ฐœ์ƒ ์กฐ๊ฑด

๐Ÿ˜Ž State, Props, ๋ฆฌ๋ Œ๋”๋ง ๋ฐœ์ƒ ์กฐ๊ฑด State State State๋Š” ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋˜๊ณ  ๋ฐ์ดํ„ฐ ๋˜๋Š” ์ •๋ณด๋ฅผ ๋‹ด์€ javascript ๊ฐ์ฒด์ด๋‹ค. (ํ•จ์ˆ˜ ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ) ๋ Œ๋”๋ง๋œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. (ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฐ’) ์‚ฌ์šฉ์ž ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ state๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ฆฌ๋ Œ๋”๋งํ•œ๋‹ค. (setState()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.) Props Props (Properties) Props๋Š” ๋ฐ์ดํ„ฐ ๋˜๋Š” ์ •๋ณด๋ฅผ ๋‹ด์€ javascript ๊ฐ์ฒด์ด๋‹ค. (ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ฒ˜๋Ÿผ) ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ : ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’์„ ์ „๋‹ฌํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. (์ „๋‹ฌ๋ฐ›์€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ ์ž…์žฅ์—์„œ๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ฐ์ดํ„ฐ์ด๋‹ค.) Stat..

๐ŸŽจFrontEnd/React 2023. 1. 2. 09:18