[Redux] ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด๋ž€?

๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด์˜ ๋™์ž‘ ํ๋ฆ„ ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์™œ ์จ์•ผํ•˜๋‚˜? ๊ธฐ์กด์˜ ๋ฆฌ๋•์Šค ์•ก์…˜ ๋ฐœ์ƒ -> ๋””์ŠคํŒจ์น˜๋ฅผ ํ†ตํ•ด ์Šคํ† ์–ด์—๊ฒŒ ์ƒํƒœ๋ณ€ํ™” ํ•„์š”์„ฑ ์•Œ๋ฆผ โฌ‡ ์ด ์‚ฌ์ด์— ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด? ex) ์–ด๋–ค ์•ก์…˜์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋กœ๊ทธ ๋‚จ๊ธฐ๊ธฐ, ์•ก์…˜ ์ทจ์†Œ, ๋˜ ๋‹ค๋ฅธ ์•ก์…˜ ๋ฐœ์ƒ ๋“ฑ ๋ฆฌ๋•์Šค : ๋™๊ธฐ์ ์ธ ํ๋ฆ„์„ ํ†ตํ•ด ๋™์ž‘ ๋™๊ธฐ์  ํ๋ฆ„์ด๋ž€? ์•ก์…˜ ๊ฐ์ฒด ์ƒ์„ฑ, ๋””์ŠคํŒจ์น˜๊ฐ€ ์•ก์…˜ ๋ฐœ์ƒ์„ ์Šคํ† ์–ด์—๊ฒŒ ์•Œ๋ฆผ, ๋ฆฌ๋“€์„œ๋Š” ์ •ํ•ด์ง„ ๋กœ์ง์— ์˜ํ•ด ์•ก์…˜์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ƒˆ๋กœ์šด ์ƒํƒœ๊ฐ’ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณผ์ • ํ•˜์ง€๋งŒ, ๋™๊ธฐ์  ํ๋ฆ„๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ํž˜๋“  ์ž‘์—…์ด ์žˆ๋‹ค ex) ์‹œ๊ฐ„ ๋”œ๋ ˆ์ด์‹œ์ผœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๊ธฐ, ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์š”์ฒญํ•˜์—ฌ ๊ทธ์— ๋”ฐ๋ฅธ ์‘๋‹ต์„ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ธฐ ๋“ฑ ์ด๋Ÿฐ ์ž‘์—…๋“ค์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋‚˜? ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด ์‚ฌ์šฉ! ๋Œ€ํ‘œ์ ์ธ ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด๋Š” ๋ฌด์—‡? ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์›..

WEB 2021. 1. 5. 14:55
[Redux] ๋ฆฌ๋•์Šค ์†Œ๊ฐœ, ๋ฆฌ๋•์Šค ๊ธฐ์ดˆ, ์™œ ์จ์•ผํ•˜๋Š”๊ฐ€?

๋ฆฌ๋•์Šค๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ ๋ฆฌ์•กํŠธ ์ƒํƒœ ๊ด€๋ฆฌ๋ž€? ๋ฆฌ์•กํŠธ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์€ ๋‹จ๋ฐฉํ–ฅ ์ž์‹์€ ๋ถ€๋ชจ์˜ ์ƒํƒœ๋ฅผ props๋กœ ์ „๋‹ฌ๋ฐ›์Œ ๋ถ€๋ชจ์˜ ์ƒํƒœ๊ฐ’์ด ๋ณ€ํ•˜๋ฉด, ์ž์‹์€ ๋ณ€ํ™”๋œ ์ƒํƒœ์— ๋งž๊ฒŒ data ํ˜น์€ UI๋ฅผ ๋ณ€๊ฒฝ == ๋ฆฌ๋ Œ๋”๋ง -> ๋ถ€๋ชจ๋„ ๋ฆฌ๋ Œ๋”๋ง, ์ž์‹๋„ ๋ฆฌ๋ Œ๋”๋ง ์ฆ‰, ์šฐ๋ฆฌ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ์— ์žˆ์–ด์„œ ์ƒํƒœ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•จ. TIP!- ๋ฆฌ๋žœ๋”๋ง ์ƒํ™ฉ 1. ์ž์‹ ์˜ state๊ฐ’ ๋ณ€๊ฒฝ 2. ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฆฌ๋ Œ๋”๋ง 3. ์ž์‹ ์ด ์ „๋‹ฌ๋ฐ›์€ props๊ฐ’ ๋ณ€๊ฒฝ 4. ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ(forceUpdate) ์‹คํ–‰๋  ๋•Œ ๋ฆฌ๋•์Šค ์™œ ์จ์•ผํ•˜๋‚˜? ๋ฆฌ์•กํŠธ๋กœ ๋งŒ๋“  SPA๋Š” data ํ˜น์€ UI์˜ ๋ณ€ํ™”๊ฐ€ ๋ณต์žก, ๋‹ค์–‘ํ•ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ -> ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ? ๋ฆฌ๋•์Šค..

WEB 2021. 1. 4. 15:04
[React] ๊ณต์‹ ๋ฌธ์„œ / Hook / 4. Effect Hook ์‚ฌ์šฉํ•˜๊ธฐ

side effect ( = effect) ๊ธฐ๋Šฅ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ตฌ๋… ์„ค์ •ํ•˜๊ธฐ ์ˆ˜๋™์œผ๋กœ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ DOM ์ˆ˜์ •ํ•˜๊ธฐ ์ข…๋ฅ˜ ์ •๋ฆฌ(clean-up)๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ์ •๋ฆฌ(Clean-up)๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๋Š” Effects ๋ฆฌ์•กํŠธ๊ฐ€ DOM์„ ์—…๋ฐ์ดํŠธํ•œ ๋’ค ์ถ”๊ฐ€๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ๋ฆฌํ€˜์ŠคํŠธ DOM ์ˆ˜๋™ ์กฐ์ž‘ ๋กœ๊น… -> ์‹คํ–‰ ์ดํ›„ ์‹ ๊ฒฝ ์“ธ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—! useEffect useEffect๊ฐ€ ํ•˜๋Š” ์ผ? -> useEffect Hook์„ ์ด์šฉํ•˜์—ฌ ์šฐ๋ฆฌ๋Š” ๋ฆฌ์•กํŠธ์—๊ฒŒ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ์ดํ›„์— ์–ด๋–ค ์ผ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ์ง€๋ฅผ ๋งํ•จ ๋ฆฌ์•กํŠธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋„˜๊ธด ํ•จ์ˆ˜(effect)๋ฅผ ๊ธฐ์–ตํ–ˆ๋‹ค๊ฐ€ DOM ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ ์ดํ›„์— ๋ถˆ๋Ÿฌ๋‚ผ ๊ฒƒ ๋ฌธ์„œ ํƒ€์ดํ‹€ ์ง€์ •, ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ช…๋ นํ˜• API ๋ถˆ๋Ÿฌ๋‚ด๊ธฐ ๋“ฑ..

WEB 2020. 12. 31. 15:14
[React] ๊ณต์‹ ๋ฌธ์„œ / Hook / 3. State Hook ์‚ฌ์šฉํ•˜๊ธฐ

Hook๊ณผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ - ๋‘˜ ๋‹ค ๊ฐ€๋Šฅ const Example = (props) => { // ์—ฌ๊ธฐ์„œ Hook์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! return ; } function Example(props) { // ์—ฌ๊ธฐ์„œ Hook์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! return ; } state๊ฐ€ ์—†๋Š” ์ปดํฌ๋„ŒํŠธ hook์€ state๋ฅผ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ hook์€ ํด๋ž˜์Šค ์•ˆ์—์„œ ๋™์ž‘ X ํ•˜์ง€๋งŒ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅ Hook์ด๋ž€? ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด useState๋Š” state๋ฅผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ ์–ธ์ œ Hook ์‚ฌ์šฉ? ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์— state๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ state ๋ณ€์ˆ˜ ์„ ์–ธ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋Š” this๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— this.state๋ฅผ..

WEB 2020. 12. 31. 10:27