๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
WEB/Front-End๐ŸŒ

[React] ๋งˆ์ง€๋ง‰ ์ •๋ฆฌ

by narang111 2021. 10. 16.

  immutable  

๋ถˆ๋ณ€. ๊ตฌํ˜„์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•จ.

๋„ˆ๋ฌด ๋†’์€ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์ด๋‹ค.

๊ฐ์ฒด๋ฅผ immutableํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ๋‹ค.

๋Œ€ํ‘œ์ : immutable.js

- ๋ฐฐ์—ด, ๊ฐ์ฒด์˜ ๋Œ€์ฒด์ œ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ

- ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์›๋ณธ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ณต์ œ๋œ ๊ฒƒ์„ return

- react์™€ ๋‹จ์ง

 

 

 

  router  

์šฐ๋ฆฌ์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•˜๋‚˜์˜ url๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Œ

ํŽ˜์ด์ง€ ์ „ํ™˜์„ ํ•  ๋•Œ ๋งˆ๋‹ค ๋„คํŠธ์›Œํฌ ๋กœ๋”ฉ์„ ํ•˜์ง€์•Š์Œ

url ๋งŒ์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„์˜ฌ ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

url์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ UI๊ฐ€ ๋‚˜์˜ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ๋„์™€์ค„ ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค.

๋Œ€ํ‘œ์ : React Router

- url์— ๋”ฐ๋ผ์„œ ์ ๋‹นํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

- url๋กœ ์ ‘๊ทผํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” url์— ํ•ด๋‹น๋˜๋Š” UI๋ฅผ ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ๋Š” permalink(ํผ๋จธ๋งํฌ) ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์œ„ ๊ธฐ๋Šฅ์€ ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ณธ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด๋‹ค.

 

 

  create-react-app์™€ npm run eject  

create-react-app์€ ํŽธ๋ฆฌํ•˜์ง€๋งŒ ๋…์„ ์ ์ด๋‹ค. 

๋” ๋ณต์žกํ•œ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” npm run eject๋ฅผ ์‹คํ–‰ํ•˜๋ฉด create-react-app์˜ ๊ฐ์ถฐ์ง„ ์—ฌ๋Ÿฌ ์„ค์ •์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ ๋ฒˆ eject์„ ํ•˜๋ฉด ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

  redux  

๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ทธ๋“ค ๊ฐ„์˜ ๊ต๋ฅ˜๊ฐ€ ๊นŒ๋‹ค๋กœ์›Œ์ง„๋‹ค.

๋ถ€๋ชจ๊ฐ€ ์ž์‹์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ๋Š” props๋ฅผ ๋”ฐ๋ผ๊ฐ€์•ผํ•˜๊ณ  ์ž์‹์ด ๋ถ€๋ชจ๋ฅผ ์ฐพ์•„๊ฐˆ ๋•Œ๋Š” event๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

๋ณต์žกํ•œ ๊ต๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ redux์ด๋‹ค,

์ค‘์•™์— ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋Š” ๊ทธ ์ค‘์•™์— ์žˆ๋Š” ์ €์žฅ์†Œ์™€ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ๋‹ค. ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๊ทธ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์•„ ๋ณ€ํ™”ํ•œ๋‹ค.

  react server side rendering  

์„œ๋ฒ„ ์ชฝ์—์„œ ์›นํŽ˜์ด์ง€๋ฅผ ์™„์„ฑํ•œ ํ›„์— ํด๋ผ์ด์–ธํŠธ๋กœ ์™„์„ฑ๋œ HTML์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด ์žˆ๋‹ค.

๋•๋ถ„์— ์ดˆ๊ธฐ ๊ตฌ๋™ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŠน์œ ์˜ ๋กœ๋”ฉ์ด ํ•„์š”์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ƒ‰์—”์ง„๊ณผ ๊ฐ™์€ ๋กœ๋ด‡๋“ค์ด HTML ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ฝ์„ ์ˆ˜ ์žˆ์–ด ์›น ํŽ˜์ด์ง€๋ฅผ ๋ถ„์„ํ• ๋ ค๊ณ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋กœ๋ด‡๋“ค์—๊ฒŒ ์นœํ™”์ ์ธ ๊ธฐ์ˆ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

  react native  

react์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์ด๋ž€ ios, ์•ˆ๋“œ๋กœ์ด๋“œ์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์„ ๋งํ•œ๋‹ค.

ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ๊ฑฐ์˜ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋™์ž‘ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.