๐Ÿ“Œ 7์ฃผ์ฐจ๋Š” React Router ์™€ CSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ StyleComponent์— ๋Œ€ํ•ด ํ•™์Šต์„ ํ–ˆ๋‹ค. 
6~7์ฃผ์ฐจ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ React์—์„œ ํ—ท๊ฐˆ๋ฆฌ๋Š”๊ฑด์ง€ JS์—์„œ ํ—ท๊ฐˆ๋ฆฌ๋Š”๊ฑด์ง€ .. ์•„์ง๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.
props์™€useState ์–ด๋–ค ํŠน์ง•์ด ์žˆ๊ณ  ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ๋„ํ†ต ๊ฐ์ด ์žกํžˆ์งˆ ์•Š๋Š”๋‹ค. 
๋‹ค๋‹ค์Œ์ฃผ๋ฉด ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํฐ์ผ๋‚ฌ๋‹ค. 
๋‚˜๋Š” ๋‚จ์—๊ฒŒ ๋ฏผํ๋ผ์น˜๋Š” ํ–‰๋™์€ ์ •๋ง ์‹ซ์–ดํ•˜๋Š”๋ฐ.. 
์ตœ์†Œํ•œ ๋œ ๋ผ์น˜๋ ค๋ฉด 8์ฃผ์ฐจ๋ถ€ํ„ฐ ์˜์ž์™€ ํ•œ ๋ชธ์ด ๋˜์–ด์•ผ๊ฒ ๋‹ค๋Š” ๋‹ค์ง์„ํ•˜๊ณ  
ํ•™์Šต์— ๋ฐฉํ•ด๋˜๋Š”๊ฒƒ๊ฐ™์€ youtube์™€ instagram์„ ์‚ญ์ œํ–ˆ๋‹ค.  
๊ทธ๋‚˜์ €๋‚˜ ์˜ค๋Š˜๋„ ์„œ๋ก ์ด ๋„ˆ๋ฌด ๊ธธ์—ˆ๋‹ค..
7์ฃผ์ฐจ ํŽ˜์ดํผ๋ฏธ์…˜ ์ฃผ์ œ๋Š” ๋ฆฌ์•กํŠธ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๋ Œ๋”๋ง ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

๐ŸŽฏ๋ฆฌ์•กํŠธ ์ƒ๋ช…์ฃผ๊ธฐ(life cycle)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—๋Š” ์ƒ๋ช… ์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์ด๊ฒƒ์„ ๋ผ์ดํ”„์‚ฌ์ดํด(Life cycle)์ด๋ผ๊ณ  ๋งŽ์ด ํ‘œํ˜„ํ•œ๋‹ค.
    ๋ผ์ดํ”„ ์‚ฌ์ดํด์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ œ๊ฑฐ๋  ๋•Œ ํŠน์ •ํ•œ ์ด๋ฒคํŠธ๋“ค์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.
    ์ด๋Ÿฌํ•œ ๋ฆฌ์•กํŠธ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
    ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์—๋Š” ๋ฆฌ์•กํŠธ ํ›…์ธ useEffect๋ฅผ ์ด์šฉํ•˜์—ฌ
    ๋น„์Šทํ•˜๊ฒŒ ์ž‘์—…์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

์ถœ์ฒ˜: http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

๐Ÿ“Œ ๋งˆ์šดํŠธ(Mount)

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฒ˜์Œ ์‹คํ–‰์ด ๋ ๋•Œ ์ƒ์„ฑ๋‹จ๊ณ„๋ฅผ ๋งˆ์šดํŠธ(Mount)๋ผ๊ณ ํ•œ๋‹ค.
๋งˆ์šดํŠธ์— ํ•ด๋‹น๋˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

  • constructor: ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์„ฑ์ž ๋ฉ”์†Œ๋“œ๋กœ, ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • getDerivedStateFromProps : props ๋กœ ๋ฐ›์•„์˜จ ๊ฒƒ์„ state ์— ์„ค์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • render : ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • componentDidMount : ์ปดํฌ๋„ŒํŠธ์˜ ์ฒซ๋ฒˆ์งธ ๋ Œ๋”๋ง์ด ๋งˆ์น˜๊ณ  ๋‚˜๋ฉด ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ

๐Ÿ“Œ ์—…๋ฐ์ดํŠธ(Update)

์ปดํฌ๋„ŒํŠธ์˜ ์—…๋ฐ์ดํŠธ ์‹œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒ๋ช…์ฃผ๊ธฐ์˜ ๋ฉ”์„œ๋“œ๋“ค์ด ํ˜ธ์ถœ ๋œ๋‹ค.

  • getDerivedStateFromProps : ์ปดํฌ๋„ŒํŠธ์˜ props ๋‚˜ state ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ๋„ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • shouldComponentUpdate : ์ปดํฌ๋„ŒํŠธ์˜ ๋ฆฌ๋ Œ๋”๋ง ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋‹ค.
  • render : ์—…๋ฐ์ดํŠธํ•œ ๋‚ด์šฉ์„ ๋ Œ๋”๋งํ•œ๋‹ค.
  • getSnapshotBeforeUpdate : ์ปดํฌ๋„ŒํŠธ์— ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ์ง์ „์˜ DOM์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ componentDidUpdate ์— ์ธ์ž๋กœ ์ „๋‹ฌ๋œ๋‹ค.
  • componentDidUpdate : ๋ฆฌ๋ Œ๋”๋ง์„ ๋งˆ์น˜๊ณ , ํ™”๋ฉด์— ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ณ€ํ™”๊ฐ€ ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ณ  ๋‚œ ๋’ค ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋‹ค. ์„ธ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ getSnapshotBeforeUpdate ์—์„œ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ์–ธ๋งˆ์šดํŠธ(Unmount)

์–ธ๋งˆ์šดํŠธ(Unmount)๋ผ๋Š”๊ฒƒ์€, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์—์„œ ์ œ๊ฑฐ ๋˜๋Š”๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ,
๊ด€๋ จ๋œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” componentWillUnmount ํ•˜๋‚˜๊ฐ€ ์žˆ๋‹ค.

componentWillUnmount()

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ์„ ํ•˜๊ณ ,
์ฃผ๋กœ ์—ฌ๊ธฐ์„œ๋Š” DOM์— ๋“ฑ๋กํ–ˆ์—ˆ๋˜ ์ด๋ฒคํŠธ๋“ค์„ ์ œ๊ฑฐํ•ด์ฃผ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ ๋œ๋‹ค.

๐ŸŽฏ์›น ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ๋ฐฉ์‹ CSR, SSR, SSG ๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ๊ฐ ๋ฐฉ์‹์„ ์–ด๋–ค ์ƒํ™ฉ์— ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

๐Ÿ“Œ CSR

ํŠน์ง•: JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ Œ๋”๋งํ•œ๋‹ค.
์‚ฌ์šฉ ์‚ฌ๋ก€: ๋™์  ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ๋Œ€ํ™”ํ˜• ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

๐Ÿ“Œ SSR

ํŠน์ง•: ์„œ๋ฒ„์—์„œ ์ „์†ก๋œ ์‚ฌ์ „ ๋ Œ๋”๋ง๋œ HTML
์‚ฌ์šฉ ์‚ฌ๋ก€: ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ์€ ์›น์‚ฌ์ดํŠธ, SEO ์ตœ์ ํ™”, ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํ˜ธ ์ž‘์šฉ์ด ์ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

๐Ÿ“Œ SSG

ํŠน์ง•: ๋นŒ๋“œ ์‹œ ์‚ฌ์ „ ๋นŒ๋“œ๋œ ์ •์  HTML
์‚ฌ์šฉ ์‚ฌ๋ก€: ๋น ๋ฅธ ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋“œ๋ฅผ ์šฐ์„ ์‹œํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ •์  ์ฝ˜ํ…์ธ , ๋ธ”๋กœ๊ทธ, ๋ฌธ์„œ ๋ฐ ์‚ฌ์ดํŠธ

๐Ÿ†š CSR vs SSR:๋†’์€ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด CSR์„ ์„ ํƒ , SEO์™€ ์ดˆ๊ธฐ ๋กœ๋“œ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด SSR์ด ์„ ํƒ
SSRvs SSG: ์ฝ˜ํ…์ธ ๊ฐ€ ๋™์ ์œผ๋กœ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ SSR์ด ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ •์ ์ด๊ณ  ๋น ๋ฅธ ์ดˆ๊ธฐ ๋กœ๋“œ์™€ ํ™•์žฅ์„ฑ์˜ ์ด์ ์„ ์›ํ•œ๋‹ค๋ฉด SSG๊ฐ€ ์ข‹์€ ์„ ํƒ์ด๋‹ค.
๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์œ ์—ฐ์„ฑ๊ณผ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง ๋˜๋Š” ํŠน์ • ํŽ˜์ด์ง€ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ฅธ ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” Next.js์™€ ๊ฐ™์€ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘๐ŸปReference

Code-it
ChatGPT
React ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ (Life Cycle)

profile
โ˜„๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€