๊ฐœ๋ฐœ/โ›ต ํ•ญํ•ด99

[ํ•ญํ•ด99] Day16. TIL – React(๋ฆฌ์•กํŠธ) ์—์„œ JSX ๋ฐฐ์—ด ๋ฐ˜๋ณต๋ฌธ / React – Router v6 ๋ณ€ํ™”

๋ฐ(Ming) ๐Ÿˆ‍โฌ› 2022. 2. 19. 01:22
728x90
๋ฐ˜์‘ํ˜•

โญ React(๋ฆฌ์•กํŠธ) ์—์„œ ๋ฐฐ์—ด ๋ฐ˜๋ณต๋ฌธ ์“ฐ๊ธฐ

์ด๋ฒˆ ์ฃผ์— ์ฃผ์–ด์ง„ ๊ฐœ์ธ ๊ณผ์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ผ๋Š”๋ฐ, ๊ณต๋ถ€ํ•  ๋•Œ๋Š” ์ˆ ์ˆ ์ˆ  ์ ํžˆ๋˜ ์ฝ”๋“œ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๊ฝ‰! ๋ง‰ํ˜”๋‹ค.

๋ฐ”๋กœ ๋ฐฐ์—ด ๋•Œ๋ฌธ์ด์˜€๋Š”๋ฐ, return () ์•ˆ์—์„œ for๋ฌธ์„ ๋ถˆ๋Ÿฌ ๋‚ผ ์ˆ˜ ์žˆ๋‚˜, ์—†๋‚˜์— ๋Œ€ํ•œ ์˜๋ฌธ๊ณผ ๋Š˜ ์ƒ map()์œผ๋กœ๋งŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋งŒ๋“ค์–ด๋‚ด๋˜ ๋ฒ„๋ฆ‡์œผ๋กœ ํ•œ์ฐธ์„ ํ—ค๋งค์˜€๋‹ค. ์ผ๋‹จ, ๋ชป ๋ถˆ๋Ÿฌ๋‚ธ๋‹ค! ใ…Ž ์—ญ์‹œ๋‚˜ ๊ธฐ์–ต์— ์—†์—ˆ๋˜ ์ด์œ ๊ฐ€ ํ™•์‹คํ•˜๊ฒŒ ์žˆ์—ˆ๋‹ค.

for๋ฌธ ์ž์ฒด๋ฅผ return () ๊ฐ’ ์•ˆ์—์„œ ๋ถˆ๋Ÿฌ๋‚ผ ์ˆ˜ ์—†์ง€๋งŒ ํ•จ์ˆ˜๋กœ ์œ„์—์„œ ์“ฐ๊ณ  JSX๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ์„ ํ•  ์ˆœ ์žˆ๋‹ค!

๊ฐœ์ธ ๊ณผ์ œ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์ผ์ฃผ์ผ ํ‰์ ์„ ์ฃผ๋Š” ํ”„๋กœ์ ํŠธ์ธ๋ฐ, ์•ž์„  ๋ฉ”์ธ ํŽ˜์ด์ง€์— ๋œจ๋Š” ํ‰์ ์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„์€ ๋žœ๋ค ์ˆซ์ž๋ฅผ ๋ฝ‘์•„์„œ ๐Ÿ’œ๐Ÿค ์ด๋ชจํ‹ฐ์ฝ˜์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด ๋•Œ ๋žœ๋ค์œผ๋กœ ๋ฝ‘ํžŒ ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’์ด props ํƒ€์ž…์œผ๋กœ ์ปดํฌ๋„ŒํŠธ์— ์ „ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์•  ๋žœ๋ค ์ˆซ์ž๋งŒํผ์˜ ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผํ–ˆ๋‹ค.

 

๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๊ฒŒ for๋ฌธ ๋ฐ–์— ์—†์„ ๊ฒƒ ๊ฐ™์€๋ฐ, return()์—์„œ ๋ฐ”๋กœ ์“ธ ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๋‹ต๋‹ตํ–ˆ๋‹ค.

 

ํ•ด๊ฒฐ์ฝ”๋“œ

 const { id, score, date} = day


    const Happy = () => {
        let scoreArr =[];
    for(let i=0; i<score; i++){
        scoreArr.push(<li>๐Ÿ’œ</li>)
    }
     
    return scoreArr; 
    }

    const Sad =() => {
        let scoreArrr =[];
        for(let j=0; j<5-score; j++){
            scoreArrr.push(<li>๐Ÿค</li>)
        }
        return scoreArrr;
    }

โœ” ์Šค์ฝ”์–ด๋ฅผ ์ค€ ๋ถ€๋ถ„์„ Happy()๋ผ๋Š” ํ•จ์ˆ˜๋กœ ์ ์ˆ˜๊ฐ€ ์•ˆ ๋“ค์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์„ Sad()๋ผ๋Š” ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด์„ ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ฉ์ณ์ฃผ๋ฉด ์ด 5๊ฐœ์˜ ํ•˜ํŠธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ๋” ํ•ด์คฌ๋‹ค.

โœ”ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๊ณ  return()๋ถ€๋ถ„์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ฐ›๋Š”๊ฑฐ๋‹ค

 

 

    return (
        <>
            <Score key={id}>
                <p>{date}</p>
                <ul>
                    {Happy()}
                    {Sad()}
                </ul>
                <button onClick={onClick}>์ ์ˆ˜์ฃผ๋Ÿฌ๊ฐ€๊ธฐ</button>
            </Score>
        </>
    )

โœ” ๋ถ„๋ช… ๋” ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ ์•„์ง์€ ์ƒ๊ฐ์ด ์ž˜ ์•ˆ ๋‚˜์„œ ์กฐ๊ธˆ ๋” ์•Œ์•„๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

โญ React – Router v6 ๋ณ€ํ™”์— ๋”ฐ๋ฅธ ์˜ค๋ฅ˜ ํŒŒํ‹ฐ~ ๐Ÿ˜ต

๋ผ์šฐํŒ…์€ ์ด์ „์— ๋…ํ•™ํ•˜๋ฉด์„œ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค ๋•Œ ๋ช‡ ๋ฒˆ ์จ๋ณธ ๊ธฐ์–ต์ด ์žˆ์–ด์„œ ์ˆ˜์›”ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ! ๋ญ”๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์•Œ๊ณ ๋ณด๋‹ˆ Route v6 ๊ฐ€ ๋‚˜์™€์„œ ๊ทธ๋Ÿฐ๊ฒƒ!!!!! ๋‚ด๊ฐ€ ๊ฒช์—ˆ๋˜ ์˜ค๋ฅ˜ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ด์•ผ๊ธฐ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

โœ” useHistory() ๋Œ€์‹ ์— useNavigate()

useHistory ๋Œ€์‹ ์— useNavigate()๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ด๊ฑธ ๋ชฐ๋ผ์„œ ์˜ค๋ฅ˜์†์—์„œ ๋˜ ํ—ค๋งธ๋‹ค.

useHistory.push(“/”) ํ•ด์•ผํ–ˆ๋Š”๋ฐ useNavigate๋ฅผ ์“ฐ๊ณ  push๋ฅผ ์•ˆ ๋ถ™์—ฌ์ค˜๋„ ๋œ๋‹ค ๐Ÿ˜€


โœ” Switch ๋Œ€์‹ ์— Routes!

Route๋ฅผ ๋ฌถ์–ด์ฃผ๋˜ Switch ๋Œ€์‹ ์— Route์—์„œ s๊ฐ€ ๋ถ™์€ Routes ๋ผ๋Š” ๊ฒƒ์ด ์ƒ๊ฒจ๋‚ฌ๋‹ค!!! ํ›จ์”ฌ ์ง๊ด€์ ์ด๋ผ์„œ ์ด๊ฑด ์ข€ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค!

โœ” Route ์“ธ ๋•Œ exact๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค!!

Route path=”” ์“ธ ๋•Œ ํ•จ๊ป˜ ์“ฐ๋˜ exact๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค. ์ด๊ฑฐ ๋ถ™์—ฌ์„œ ์“ฐ๋ฉด ์˜ค๋ฅ˜๋‚œ๋‹ค.

โœ” component ๋ง๊ณ  element ๋กœ!

<Route component ={ component } />

๋ผ๊ณ  ์“ฐ๋˜ ๊ตฌ๋ฌธ์— component๊ฐ€ element๋กœ ๋ฐ”๊ผˆ๋‹ค!

์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ฐธ์กฐํ•œ ๋ธ”๋กœ๊ฑฐ๋‹˜์˜ ํฌ์ŠคํŒ… ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ‘‰๐Ÿป React-Router v6 ๋ณ€ํ™” ์•Œ์•„๋ณด๊ธฐ

 

 

 

 

 

๐Ÿ’œ ํšŒ๊ณ 

์ด๋ฒˆ ์ฃผ์— ์ „๋‹ฌ ๋ฐ›์€ 5์ฃผ์งœ๋ฆฌ ๊ฐ•์˜๋ฅผ 2์ฃผ์— ๊ฑธ์ณ์„œ ๋“ฃ๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ์ˆœ๊ฐ„ ์กฐ๊ธˆ ํ™”๊ฐ€ ๋‚ฌ๋‹ค. ๋ฌผ๋ก  ๋น„์ „๊ณต์ž๋“ค๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋ถ€ํŠธ ์บ ํ”„๋ผ๋Š” ๊ฑธ ์•Œ๊ณ  ๋“ค์–ด์™”๊ณ , ๋‚˜๋„ ๊ฐ•์˜์˜ ํ€„๋ฆฌํ‹ฐ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€๋ณด๋‹ค๋Š” ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์Œ“์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์— ์‹œ์ž‘ํ•œ ๊ฑฐ๊ธด ํ•œ๋ฐ. ์ด ์ •๋„ ๋ฐฐ์šฐ๊ณ  ํด๋ก  ์ฝ”๋”ฉ & ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋‹ค๋ฉด ์ง„์งœ ๋ฉ˜ํƒˆ ๊ฐˆ๋ฆด ๊ฒƒ ๊ฐ™์€๋ฐ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์˜ค๋Š˜ ๋ฆฌ๋•์Šค๊นŒ์ง€ ๋“ฃ๋Š”๋ฐ, ์ด์ „์— ๋ฆฌ๋•์Šค๋ผ๋Š” ๊ฒƒ์„ ํ•œ ๋ฒˆ ๋‹ค๋ค„๋ดค๋˜ ๋‚˜๋„ ์ด์ œ์•ผ ์ดํ•ด๊ฐ€ ๋  ๋ฒ•ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“œ๋Š”๋ฐ, ์ด๋Ÿฐ ์ปค๋ฆฌํ˜๋Ÿผ์ด ๊ดœ์ฐฎ์€๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์„ ๋Š์ž„์—†์ด ํ•˜๊ฒŒ ๋˜๊ณ . ๋‚ด๊ฐ€ ๊ณผ์—ฐ ์ด๋Ÿฐ ํ•™์Šต์œผ๋กœ ์‹ฌํ™” ๋‹จ๊ณ„๋กœ ์ ํ”„๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ? ๋ผ๋Š” ์˜๊ตฌ์‹ฌ๋„ ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ธฐ์ดˆ๊ฐ€ ์•ฝํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ดˆ๊ธ‰ ๊ฐ•์˜ ๋“ฃ๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ํ•˜๋ฃจํ•˜๋ฃจ ์‚ฌ๋žŒ๋“ค์ด ์บ ํ”„๋ฅผ ์ดํƒˆํ•ด๊ฐ€๋Š” ๋ชจ์Šต์„ ๋ณด๋ฉด ์—„์ฒญ ํ”๋“ค๋ฆฐ๋‹ค.
์ด๋ฏธ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋ฅผ ๋“ค์„ ๊ฑฐ๋ผ๊ณ  ๋งํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹ ์˜ค๋งˆ์ด๊ฐ“… ์ปค๋ฆฌํ˜๋Ÿผ์ด ์—„์ฒญ ๋นก์‹  ๊ฒƒ ๊ฐ™์œผ๋ฉด์„œ๋„ ๋А์Šจํ•œ ๊ฒƒ ๊ฐ™๊ณ  ๋ฆฌ์•กํŠธ๋Š” ์ž…๋ฌธ๋งŒ 2์ฃผ๊ณ  ์‹ฌํ™”๋Š” 1์ฃผ๋งŒ ํ•œ๋‹ค. 5์ฃผ์ฐจ ๊ฐ•์˜๋ฅผ 2์ฃผ ๋™์•ˆ ๋ณด๋Š” ๊ฑฐ๋‹ค.
๋‚˜๋Š” ์ด๋ฒˆ ์ฃผ์— ๋‹ค ๋๋‚ผ ๊ฒƒ ๊ฐ™์€๋ฐ, ๋ญ”๊ฐ€…. ๋ญ”๊ฐ€…… ๋ญ๊ฐ€……..๋ญ”๊ฐ€…… ์•„์‰ฝ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ•์˜์— ๋ถ™์–ด์žˆ๋Š” ์ˆ™์ œ๋กœ ๋‚ด์ฃผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์•„์ฃผ ํƒ„ํƒ„ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์„œ ํ•˜๋‚˜์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค! ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฒˆ ์ฃผ์— 2๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค!

728x90