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

์ „์ฒด ๊ธ€84

๋ฆฌ์•กํŠธ์—์„œ setState๋ฅผ ํ†ตํ•ด์„œ state๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์ด์œ  / setState์˜ ๋น„๋™๊ธฐ์„ฑ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฒ˜์Œ์—๋Š” ์—†๋˜ ์˜๋ฌธ์ด ๊ฐ‘์ž๊ธฐ ์ƒ๊ฒผ์—ˆ๋‹ค. ์™œ ๋ฆฌ์•กํŠธ๋Š” useState๋ผ๋Š” ํ›…์„ ์‚ฌ์šฉํ•ด์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”๊ฒƒ์ธ๊ฐ€ ๋ฌผ๋ก  ํ›…์„ ์‚ฌ์šฉํ•ด์„œ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ง‰์•„์ฃผ๊ณ , ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์‹œ์ ์— ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ผ ๊ฑฐ๋‹ค. ํ•˜์ง€๋งŒ, ์™œ!! ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๋“ฏ์ด ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š”๊ฒƒ์ด๋ƒ ์ด๊ฒŒ ๋ฌธ๋“ ๊ถ๊ธˆํ•ด์กŒ๋‹ค ์ด์œ  state๋Š” immutable(๋ถˆ๋ณ€์„ฑ)์„ ์œ ์ง€ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ๋Š” ํ˜„์žฌ์˜ this.state์™€ setState๋ฅผ ๋น„๊ตํ•ด์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, state๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฆฌ์•กํŠธ๊ฐ€ render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„ ์ƒํƒœ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋„ ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ถ”์ ํ•˜.. 2022. 10. 21.
CSR vs SSR CSR ๊ณผ SSR ์˜ ์ฐจ์ด๋ฅผ ํ•™์Šตํ•  ๋•Œ๋Š” ํ•„์ˆ˜์ ์œผ๋กœ SPA์™€ MPA์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ๋จผ์ € ๋‚˜์™€์•ผํ•œ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋ฉด ์ข‹์„๊ฒƒ๊ฐ™๋‹ค. ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ CSR๊ณผ SSR์— ๋Œ€ํ•œ ์–˜๊ธฐ๋กœ ๋„˜์–ด๊ฐ€๋ณด์ž. ์ฐพ์•„๋ณด๋ฉด CSR์€ SPA์™€ ์—ฐ๊ฒฐ์ง€์–ด์„œ ๋งŽ์ด ์„ค๋ช…์ด ๋˜์–ด์žˆ๊ณ , SSR์€ MPA์™€ ์—ฎ์—ฌ์„œ ๋งŽ์ด ์„ค๋ช…์ด ๋˜์–ด์žˆ๋‹ค. ์˜ˆ์ „์—๋Š” ์ด๊ฒƒ๋งŒ ๋ณด๊ณ  ๊ทธ๋Ÿผ ์„œ๋กœ์„œ๋กœ ๊ฐ™์€ ๊ฐœ๋…์ธ๊ฐ€?๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋Š”๋ฐ ์•„๋‹ˆ๋‹ค. ๋ช…์‹ฌํ•  ๊ฒƒ์€ CSR์ด ์ „๋ถ€ SPA๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ๋Š” ์ ! ๊ทธ๋ ‡๋‹ค๋ฉด csr, ssr์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž! CSR(Client Side Rendering) ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง. ๋ง ๊ทธ๋Œ€๋กœ๋‹ค ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค. ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  -> ์‘๋‹ต์„ ๋ฐ›๊ณ  -> ๊ทธ๋ฆฌ๊ณ  ์ด ๊ณผ์ • ๋ฐ˜๋ณต .. 2022. 1. 2.
URI์™€ URL์˜ ์ฐจ์ด์  ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋Š” ์‚ฌ๋žŒ์œผ๋กœ์จ Restful API์— ๋Œ€ํ•ด์„œ ๋Œ€๋žต์ ์œผ๋กœ๋Š” ์•Œ์•„์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค. restful api์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๊ฐ€ URL, URI ์šฉ์–ด๊ฐ€ ํ˜ผ์šฉ์ด ๋งŽ์ด ๋˜๋Š” ๊ฑธ ๋ณด๋ฉด์„œ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ๋‹ค. ๋„๋Œ€์ฒด ๋‘˜์ด ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฑฐ์ง€...? ๋ญ”๊ฐ€ ์• ๋งคํ•˜๊ฒŒ ๋„˜์–ด๊ฐ€๋Š”๊ฒŒ ์ฐ์ฐํ•ด์„œ ํ•œ๋ฒˆ ์ฐพ์•„๋ดค๋‹ค URI (Uniform resource Identifier) ์ธํ„ฐ๋„ท ์ƒ์—์„œ ํŠน์ • ์ž์›(ํŒŒ์ผ)์„ ๋‚˜ํƒ€๋‚ด๋Š” ์œ ์ผํ•œ ์ฃผ์†Œ ์ž์›์˜ id -> ์œ ์ผํ•ด์•ผํ•จ URL (Uniform Resource Locator) ํ†ตํ•ฉ ์ž์› ์‹๋ณ„์ž๋กœ ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ์œ ์ผํ•œ ์ฃผ์†Œ URL์€ ํŠน์ • ์„œ๋ฒ„์˜ ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์ธ ์œ„์น˜๋ฅผ ์„œ์ˆ  ์ •๋ฆฌ๋œ ๊ธ€๋“ค์„ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ฉด์„œ ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๊ฒƒ์€ (ํ‹€๋ฆด์ˆ˜๋„ ์žˆ๋‹ค) ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋„๋ฉ”์ธ์œผ๋กœ ์ƒ๊ฐํ•˜.. 2021. 10. 11.
[๋ผ์ด์ง•์บ ํ”„] ์›น๋ฆฌ๋” ํŠธ๋ž™ ์ˆ˜๋ฃŒ ํ›„๊ธฐ ๐Ÿค”์˜์‹์˜ ํ๋ฆ„๋Œ€๋กœ ํ˜๋Ÿฌ๊ฐ ์ฃผ์˜,, ๊ทธ๋ƒฅ ๋‹ค๋“ค ์ œ ํ๋ฆ„์— ํƒ€์„œ ์ฝ์–ด์ฃผ์„ธ์š”...! ๋ผ์บ ์ˆ˜๋ฃŒํ›„๊ธฐ์ธ๋ฐ...์ด์ œ ํˆฌ๋จธ์น˜ํ† ์ปค๋ฅผ ๊ณ๋“ค์ธ... ์ˆ˜๋ฃŒํ•˜๊ณ  ๊ทธ๋•Œ ๋– ์˜ฌ๋ฆฌ๋ฉด์„œ ํ›„๊ธฐ์“ฐ๋‹ˆ๊นŒ ๋ญ”๊ฐ€ ์•„๋ จํ•ด์ง€๋„ค์š”....๐Ÿฅบ ๋•Œ๋Š” ๋ฐ”์•ผํ๋กœ... 6์›” ์ฒซ ์ฃผ.. ๊ทธ ๋‹น์‹œ ๋ช‡ ์ผ์ „ ์Šคํƒ€ํŠธ์—… ์ธํ„ด ๋ฉด์ ‘์„ ์ข‹์€ ๊ธฐํšŒ์— ๋ณด๊ฒŒ ๋์—ˆ๊ณ , ์ƒ๋žตํ•˜์ž๋ฉด ๋ญ ๋–จ์–ด์ง€๋Š” ๊ฑด ์‚ฌ์‹ค ์ƒ๊ด€์ด ์—†์—ˆ๋Š”๋ฐ(ํ•™๊ต๋ฅผ ๋‹ค๋…€์•ผํ•œ๋‹ค๋Š” ํ•ฉ๋ฆฌํ™”) ๋ฉด์ ‘์—์„œ ๋ง๋„ ์•ˆ๋˜๋Š” ๋Œ€๋‹ต๋“ค์„ ํ•˜๊ณ  ์™€์„œ ๋ฉด์ ‘์„ ๊ทธ๋ ‡๊ฒŒ ๋ณด๊ณ  ์™”๋‹ค๋Š” ๊ฒŒ ๋„ˆ๋ฌด ์ฐฝํ”ผํ•˜๊ณ  ์ž๊ดด๊ฐ์ด ์™”์—ˆ๋‹ค. ์ง„์งœ ๋‹จ์ˆœ๊ณผ ํ–‰๋ณต๋นผ๋ฉด ์‹œ์ฒด์˜€๋˜ ์‚ฌ๋žŒ์ด์—ˆ๋Š”๋ฐ ๊ทธ๋•Œ ์ถฉ๊ฒฉ์ด ์–ด์ง€๊ฐ„ํžˆ ์ปธ๋˜์ง€ ๋ฉ˜ํƒˆ์ด ์™„์ „ํžˆ ๋‚˜๊ฐ€์„œ ์ดํ‹€์„ ์ด๋ถˆํ‚ฅํ•˜๋ฉด์„œ ์ž ๋„ ์ œ๋Œ€๋กœ ๋ชป์ž๊ณ  ์ œ๋Œ€๋กœ ๋จน์ง€๋„ ๋ชปํ•˜๊ณ  ๋‹ค์Œ์ฃผ์˜€๋˜ ๊ธฐ๋ง์‹œํ—˜๊ณต๋ถ€๋„ ๋ชปํ–ˆ๋‹ค. (ํฌ๋งจ์˜ ๋ชปํ•ด ํ‹€์–ด์ฃผ์„ธ์š”...) ์•„๋ฌผ๋ก , ์ดํ‹€๋’ค์— .. 2021. 9. 18.
Redux ๋ฆฌ๋•์Šค๋Š” ์–ด๋ ต๋‹ค... Redux? ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋ณต์žกํ•ด์ง€๋Š” ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ why? ๊ตฌ์กฐ๊ฐ€ ์ ์  ๋ณต์žกํ•ด์ง€๋ฉด์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋ถ€ํ„ฐ ์ตœํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ๋‚ด๋ ค์˜ค๋ฉด์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ! ๋ฆฌ๋•์Šค๋กœ ๋ฐ”๊นฅ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉด์„œ ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผ! ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๋ณด์ž! ๐Ÿ‘‡ ์œ„์˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๊ฐ€ ์•„๋ž˜์˜ ์ปดํฌ๋„ŒํŠธ๊ตฌ์กฐ์™€ ๊ฐ™์ด ๋ณต์žกํ•ด์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ด๋Ÿด ๊ฒฝ์šฐ, ์ตœํ•˜์œ„ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๊ฑฐ๋‚˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์— ์˜ํ•ด์„œ ๋‹ค๋ฅธ ๋ฃจํŠธ์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ณ€ํ™”๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผ์ผœ์•ผํ•˜๋Š” ์ƒํƒœ์ผ ๊ฒฝ์šฐ์ผ ๋•Œ ๋น„ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. How? ์œ„์— ์ œ๊ฐ€ ๋ฌธ์ œ๋กœ ์ œ์‹œํ–ˆ๋˜ ์ƒํ™ฉ๋“ค์„ ๋ฆฌ๋•์Šค๋Š” ๋ฐ”๊นฅ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ ๋ฆฌ.. 2021. 7. 13.
[React] useEffect useEffect๋ฅผ ์ข€ ๋” ์ง‘์ค‘์ ์œผ๋กœ ๋‹ค๋ค„๋ณผ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ์ด๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ์ง๊ฒฐ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด์„œ ๋‹ค์‹œ ๋ฆฌ๋‹ค๊ธฐ ์ฑ…์„ ์˜ค๋žœ๋งŒ์— ํŽด์„œ ์‚ดํŽด๋ณด์•˜๋‹ค. UseEffect useEffect๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ›…์ด๋‹ค. componentDidMount + componentDidUpdate componentDidMount + componentDidUpdate + componentWillUnmount ๋งˆ์šดํŠธ ๋  ๋•Œ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ (ComponentDidMount) useEffect(() => { console.log('๋งˆ์šดํŠธ๋ ๋•Œ๋งŒ'); },[]); ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๋งจ ์ฒ˜์Œ ๋ Œ๋”๋ง ๋์„ ๋•Œ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ .. 2021. 7. 6.
๋ฐ˜์‘ํ˜•