0812 TIL React

๋ƒํ•˜ํ˜ธํ›„ยท2021๋…„ 8์›” 12์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
26/101

๐Ÿ™†โ€โ™€๏ธSPA(Single-Page Application) ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

SPA๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์„œ๋ฒ„์—์„œ ์ „๋‹ฌ๋ฐ›์•„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งํ•œ๋‹ค.

๐Ÿ™†โ€โ™€๏ธSPA์˜ ์žฅ, ๋‹จ์ ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์žฅ์ : ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์•„์„œ ํ™”๋ฉด์— ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์™€ interaction์— ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•œ๋‹ค.
    ์„œ๋ฒ„ ๊ณผ๋ถ€ํ™” ๋ฌธ์ œ๊ฐ€ ์ค„์–ด๋“ ๋‹ค. ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

  • ๋‹จ์ : JavaScript ํŒŒ์ผ์ด ๋ฌด๊ฑฐ์›Œ์„œ ์ด JavaScript ํŒŒ์ผ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ์ฒซ ํ™”๋ฉด์˜ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค.
    ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”์— ์ข‹์ง€์•Š๋‹ค.

๐Ÿ™†โ€โ™€๏ธ์™€์ด์–ดํ”„๋ ˆ์ž„์„ ๋ณด๊ณ  ์–ด๋Š ๋ถ€๋ถ„์„ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ๋ถ„ํ•  ์ง€ ์Šค์Šค๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ™†โ€โ™€๏ธReact์—์„œ npm์œผ๋กœ React Router DOM์„ ์„ค์น˜(npm install react-router-dom)ํ•˜๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ™†โ€โ™€๏ธReact Router DOM๋ฅผ ์ด์šฉํ•˜์—ฌ SPA๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ™†โ€โ™€๏ธ๋ผ์šฐํŒ… ๊ตฌ์กฐ๋ฅผ ์งค ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ , ์ด์— ํ•„์š”ํ•œ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

React Router ์—์„œ <a>ํƒœ๊ทธ๊ฐ€ ์•„๋‹Œ <Link>ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

<a>ํƒœ๊ทธ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ Œ๋”๋ง์„ ์‹œํ‚จ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ๊ณ ์นจ ํ˜„์ƒ์ด ์ผ์–ด๋‚œ๋‹ค.
ํ•˜์ง€๋งŒ <Link> ์ปดํฌ๋„ŒํŠธ๋Š” ํŽ˜์ด์ง€ ์ „ํ™˜์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— SPA๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Switch

Switch์ปดํฌ๋„ŒํŠธ๋Š” ์—ฌ๋Ÿฌ route์ค‘์—์„œ ์ผ์น˜ํ•˜๋Š” ๋‹จ ํ•˜๋‚˜์˜ route๋งŒ ๋ Œ๋”๋งํ•œ๋‹ค.

๊ณ ์ฐจํ•จ์ˆ˜ 28๋ฒˆ

function getLengthOfLongestElement(arr) {
 return arr.reduce(function(acc,cur){
   let longest = acc
   if(cur.length > longest.length){
    longest = cur
   }
   else{
     longest = acc
   }
   return longest   //reduce๋Š” return value๊ฐ€ ๋‹ค์Œ๋ฐ”ํ€ด์˜ acc๊ฐ’์ด ๋˜๊ธฐ๋•Œ๋ฌธ์— longest.length๋กœ ์ฒซ๋ฒˆ์งธ๋ฐ”ํ€ด๊ฐ€ ๋๋‚˜๊ณ  ๊ทธ ๋‹ค์Œ๋ฐ”ํ€ด์— longest๊ฐ€ ์ˆซ์ž๊ฐ€๋œ๋‹ค.
 },'').length
}

// ๋ฌธ์ž์—ด์„ ์š”์†Œ๋กœ ๊ฐ–๋Š” arr๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฆฌํ„ดํ•ด์•ผํ•œ๋‹ค.
//reduce๋กœ ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์—ด์„ returnํ•œ๋‹ค.
//๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฆฌํ„ด๊ฐ’์˜ ๊ธธ์ด์— .length ๋ฅผ ๋ถ™์ธ๋‹ค.

acc๊ฐ€ ์ฒ˜์Œ์—๋งŒ ์ดˆ๊ธฐ๊ฐ’์ด๊ณ  ๊ทธ ๋‹ค์Œ ๋ฐ”ํ€ด๋ถ€ํ„ฐ๋Š” return๋œ ๊ฐ’์ด acc์— ํ• ๋‹น๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ๋ชฐ๋ž์—ˆ๋‹ค. ๊ฐœ๋…์ด ์•ฝํ•ด์„œ ํ—ค๋งธ๋˜ ๋ฌธ์ œ์˜€๋‹ค.

๊ทธ์™ธ

๊ณต์‹๋ฌธ์„œ์—์„œ "This is by design"
์ด๋Ÿฐ์‹์œผ๋กœ ์จ์žˆ๋Š”๊ฑด ๊ทธ๋ƒฅ ์•Œ๋ ค๊ณ ํ•˜์ง€๋ง๊ณ  ์“ฐ๋ผ๋Š” ๋ง์ด๋‹ค. ์ž‘๋™๋ฐฉ๋ฒ•์ด ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค. ๊ทœ์น™์ด๋‹ค.

react์—์„œ ์ปดํฌ๋„ŒํŠธ ๋ฐ–์—๋Š” //blahblah ์ด๋ ‡๊ฒŒ ์ฃผ์„์„ ์“ธ ์ˆ˜ ์žˆ๊ณ 
์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„  {/* blahblah*/} ์š”๋ ‡๊ฒŒ์“ด๋‹ค.

profile
DONE is better than PERFECT

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