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

Progress/๐ŸŽ€ ๋…ธ๋งˆ๋“œ์ฝ”๋” ๋ฆฌ์•กํŠธ4๊ธฐ

[2์ฃผ์ฐจ] ์ฃผ๊ฐ„ํšŒ๊ณ ๋ก

728x90

๐Ÿ—บ๏ธ 2์ฃผ์ฐจ (24.02.21 - 2.27)

 

๐Ÿชด ํ•ต์‹ฌ 3์ค„ ์š”์•ฝ

- ๋ฆฌ์•กํŠธ ๊ธฐ์–ต ๋˜์‚ด๋ฆฌ๊ธฐ ์†”์†” 

- ์‹œ๊ฐ„ ๋ถ„๋ฐฐ ์ž˜ ํ•˜๋Š” ์—ฐ์Šตํ•˜๊ธฐ

- ๊ณ„ํš ๋ฏธ๋ฆฌ ์„ธ์šฐ๊ณ  ํ™•์ธํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ

 

๐ŸŽ  ์ด๋ฒˆ ์ฃผ ๋ชฉํ‘œ 

โœ… ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ ๊ฐ•์˜ ํ•ด๋‹น ๋ฒ”์œ„ ๋“ฃ๊ธฐ

โœ… ์ฑŒ๋ฆฐ์ง€ ์˜ฌ์ถœํ•˜๊ธฐ

โœ… ์ฃผ๊ฐ„ํšŒ์˜ ์ฐธ์—ฌํ•˜๊ธฐ

 

๐Ÿฅž ์นญ์ฐฌํ•˜๊ณ  ์‹ถ์€ ์ 

- ๊ณผ์ œ, ํ€ด์ฆˆ ์ œ์ถœ ํ•œ ์ 

 

 

๐Ÿ† ๊ณ ์น˜๊ฑฐ๋‚˜ ๋ฒ„๋ ค์•ผ ํ•  ์ 

- ์‹œ๊ฐ„ ๋ถ„๋ฐฐ ์ž˜ ๋ชปํ•˜๋Š” ์ . ํ•ด์•ผ ํ•  ๊ฒƒ์ด ์žˆ์„ ๋•Œ ํ•˜๋˜ ์ผ ๊ทธ๋งŒ ๋‘๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค. 

 

 

๐Ÿฌ ์ผ์ผ ์Šคํ”„๋ฆฐํŠธ ๋ชจ์Œ

๐Ÿ“† 2/21 (์ˆ˜)

โœ… ์ฃผ๊ฐ„ ํšŒ๊ณ ๋ก ์ˆ˜์ • & ์ œ์ถœ

โœ… ์ฑŒ๋ฆฐ์ง€ ์ œ์ถœ

โ˜‘๏ธ ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ #4.0-4.3

โ˜‘๏ธ ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ #5.0-5.1

 

๐Ÿ“† 2/22 (๋ชฉ)

โœ… ํ€ด์ฆˆ ์ œ์ถœ

โ˜‘๏ธ ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ #4.0-4.3

โ˜‘๏ธ ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ #5.0-5.1

 

๐Ÿ“† 2/23 (๊ธˆ)

๋†€๋Ÿฌ๊ฐ”๋‹ค๋„ค

 

๐Ÿ“† 2/24 (ํ† )

โ˜‘๏ธ ๋ฆฌ์•กํŠธ ๊ฐ•์˜ ๋ฐ€๋ฆฐ ๊ฒƒ ๋“ฃ๊ธฐ - #4.0-5.2

 

๐Ÿ“† 2/25 (์ผ)

โ˜‘๏ธ ์กธ์ž‘ ์žฌ์ถœ

 

๐Ÿ“† 2/26 (์›”)

โœ… ํ€ด์ฆˆ ์ œ์ถœ

 

๐Ÿ“† 2/27 (ํ™”)

โœ… ํ€ด์ฆˆ ์ œ์ถœ

 

 

๐Ÿ’ ์ด๋ฒˆ ์ฃผ ๋ฐฐ์šด ๋‚ด์šฉ

 

๐ŸŠ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

1. useMemo()

์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด useMemo() ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋งŒ๋“ค์–ด๋†“์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ React.memo(์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„) ์ด๋ ‡๊ฒŒ memo ์•ˆ์— ๋„ฃ์œผ๋ฉด, 

ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ ๋ณ€ํ™”ํ•œ UI ๊ฐ€ ์—†๋‹ค๋ฉด, 

ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋Š” re-rendered ๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

2. props ์˜ ๊ธฐ๋ณธ ๊ฐ’ ์„ค์ •ํ•ด์ฃผ๊ธฐ (JS) & ํƒ€์ž… ์„ค์ •ํ•ด์ฃผ๊ธฐ - propTypes ์‚ฌ์šฉ

props ๋ฅผ ๋ฐ›์•„์˜ค๋ฉด์„œ = ๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋”ฐ๋กœ ๋ณด๋‚ด์ฃผ์ง€ ์•Š์•˜์„ ๋•Œ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค. 

์ด๊ฑด ๋ฆฌ์•กํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ JS ๋ฌธ๋ฒ•์ด์ง€๋งŒ ๊นŒ๋จน์–ด์„œ ๋ฉค๋ชจ

 

 

3. css - module ์‚ฌ์šฉ๋ฒ•

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, 

Button.module.css ๋ผ๋Š” ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” .btn ํด๋ž˜์Šค๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๊ทธ๋Ÿผ ๋žœ๋คํ•œ class name ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. 

๊ทธ๋ ‡๊ธฐ์— ๋˜‘๊ฐ™์€ className ์„ ๋‹ค๋ฅธ ํŒŒ์ผ ๋‚ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

CRA ์˜ ๊ธฐ๋Šฅ. 

 

4. useEffect()

https://react.dev/reference/react/useEffect

 

useEffect – React

The library for web and native user interfaces

react.dev

์ปดํฌ๋„ŒํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ state ์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์žฌ๋ Œ๋”๋ง์ด ๋œ๋‹ค. (function ๋‚ด์— ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰๋จ.)

๋‹ค์‹œ render ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ˜๋ณต ์‹คํ–‰๋˜์–ด๋„ ๊ดœ์ฐฎ์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ณ , 

component ๊ฐ€ ์ฒ˜์Œ render ๋  ๋•Œ๋งŒ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธธ ์›ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

๊ฐ€๋ น API ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ, ์ดํ›„์— state ๊ฐ€ ๋ณ€ํ™”ํ•  ๋•Œ ๊ตณ์ด ๊ฐ™์€ API ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์ง„ ์•Š์„๊ฑฐ์ž„. 

[] ์•ˆ์— ๋ณ€ํ–ˆ์„ ๋•Œ ๋ Œ๋”๋˜๊ธธ ์›ํ•˜๋Š” state ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

5. ์šฐ๋ถ„ํˆฌ์— git ์„ค์น˜

์ตœ๊ทผ์— ๋…ธํŠธ๋ถ์„ ํฌ๋ฉงํ•ด์„œ ์šฐ๋ถ„ํˆฌ ์„ธํŒ…์„ ๋‹ค์‹œ ํ•˜๊ณ  ์žˆ๋‹ค. 

(1) ๊นƒ ์„ค์น˜ํ•˜๊ธฐ

sudo apt install git

๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํ•˜๋ฉด ์„ค์น˜๋œ๋‹ค.

(2) ์ž˜ ์„ค์น˜๋๋Š”์ง€ git ๋ฒ„์ „ ํ™•์ธํ•˜๊ธฐ

git --version

(3) push ํ•  ๋•Œ ์˜ฌ๋ผ๊ฐˆ ๋‚ด ์ •๋ณด ์ž…๋ ฅํ•ด์ฃผ๊ธฐ

git config --global user.name ์ด๋ฆ„
git config --global user.email ์ด๋ฉ”์ผ

 

*์—ฌ๊ธฐ๋ถ€ํ„ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ ์‹œ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ๊ณผ ๋™์ผ

(4) git ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

git init

(5) ๋งŒ๋“  ํ”„๋กœ์ ํŠธ repository ์™€ ์—ฐ๋™ํ•˜๊ธฐ  

git remote add origin ๊นƒ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ฃผ์†Œ

 

 

6. VS code prettier ์„ธํŒ… - ์•„๋ž˜ ์ฐธ์กฐํ•ด์„œ ์„ธํŒ…

https://green-grapes.tistory.com/entry/VSCode-prettier-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

 

[VSCode] prettier ์„ค์ •ํ•˜๊ธฐ

1. ์ผ๋‹จ ํ™•์žฅ(extensions) ๋“ค์–ด๊ฐ€์„œ prettier ์น˜๊ณ  ๊ฐ€์žฅ ์ฒ˜์Œ ๋‚˜์˜ค๋Š” ๊ฑฐ ๋‹ค์šด ๋ฐ›๋Š”๋‹ค. 2. ctrl ๊ณผ , ํ‚ค๋ฅผ ๋™์‹œ์— ๋ˆŒ๋Ÿฌ์„œ ์„ค์ • ์ฐฝ์„ ์—ฐ๋‹ค. 3. ์„ค์ •์—์„œ Editor: Default Formatter ๊ฒ€์ƒ‰ Prettier -Code Formatter ์„ ํƒ 4. ์„ค

green-grapes.tistory.com

 

7. VS code ์—์„œ ๊นƒํ—ˆ๋ธŒ๋กœ push ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ƒ๊ธด ์˜ค๋ฅ˜

 

..? ์•„๊นŒ ์ž…๋ ฅ ๋‹ค ํ–ˆ๋Š”๋ฐ

 

 

์•Œ๊ณ  ๋ณด๋‹ˆ Name ๊ณผ Email ๋ชจ๋‘ " " ๋”ฐ์˜ดํ‘œ ์•ˆ์— ์จ์ค˜์•ผ ํ–ˆ๋‹ค... ๋จธ์“ฑ~

^_^;

 

8. ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” (์—‘๋ฐ•๋œจ๋Š”) ์˜ค๋ฅ˜์™€ ํ•ด๊ฒฐ

์ด์ „ ๊ธฐ์ˆ˜์—์„œ๋„ ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ Header ์— png ํ˜•์‹์˜ ๋กœ๊ณ ๋ฅผ ๋„ฃ๊ณค ํ–ˆ๋Š”๋ฐ, 

๋””์ฆˆ๋‹ˆ ๊ณผ์ œ ๋•Œ๋„ ๊ทธ๋ ‡๊ณ  Header ์— ๋”ฑ! ์ž๋ฆฌ์žก๊ณ  ์žˆ์–ด์•ผ ํ•  ๋กœ๊ณ ๊ฐ€ ์ž๊พธ ์‚ฌ๋ผ์ ธ์„œ ์งœ์ฆ๋‚ฌ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.

๊ทผ๋ฐ ์™œ๊ทธ๋Ÿฌ์ง€ ํ•˜๊ณ  ๊ธฐ๋Šฅ ์ž˜ ๋˜๋‹ˆ๊นŒ ๋„˜์–ด๊ฐ”์—ˆ๋‹ค๊ฐ€ ์ด๋ฒˆ์—๋„ ๊ทธ๋Ÿฌ๊ธธ๋ž˜ ์ฐพ์•„๋ดค๋‹ค. 

(์ฐธ๊ณ ๋กœ require ์„ ๋ถ™์—ฌ๋„ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ์˜คํžˆ๋ ค react ๊ฐ€ ์˜ค๋ฅ˜๋ผ๊ณ  ์–˜๊ธฐํ•จ)

์›์ธ์€ src ์— ์ง์ ‘์ ์œผ๋กœ ์ด๋ฏธ์ง€ path ๋ฅผ ์ ์–ด์ค€ ๊ฒƒ. 

์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

      <Link to="/">
        <img src="src/assets/marvel_full.png" alt="MARVLE" />
      </Link>

 

์ˆ˜์ •ํ•œ ์ฝ”๋“œ

import logo from '../assets/marvel_full.png';

export default function Header() {
  return (
    <div className="">
      <h1>Fetured</h1>
      <Link to="/">
        <img src={logo} alt="MARVLE" />
      </Link>

์ด๋ ‡๊ฒŒ 

์ด๋ฏธ์ง€๋ฅผ logo ๋ผ๋Š” ๋ณ€์ˆ˜๋กœ import ํ•ด์ค€ ๋’ค, src ์— ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์คฌ๋‹ค. 

์ด์ œ Header ๊ฐ€ ๋œฐ ๋•Œ๋งˆ๋‹ค ๋กœ๊ณ ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€๋ฅผ ์ž˜ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋๋‹ค. 

์Œ ๊ทผ๋ฐ ์™„์ „ํ•˜๊ฒŒ ์ดํ•ด๋Š” ์•ˆ๋ผ์„œ ๋‹ค์‹œ ์ฐพ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. 

 

 

 

 

 

 

โ›ณ ์งˆ๋ฌธ

 

 

 

 

๐Ÿ‘Ÿ ์ฃผ๊ฐ„ ํšŒ์˜์™€ ์กฐ๋ณ„ ํ™œ๋™

- ์žฌํ™˜๋‹˜์ด TA ๋กœ ๊ณ„์‹  2์กฐ๋กœ ํŽธ์„ฑ๋๋‹ค! ํ–„๋ฟก์ด๋ฅผ ์ข‹์•„ํ•˜์‹ ๋‹ค. 

 

 

 

 

๐ŸŒต ์ƒ๊ฐ ๊ธฐ๋ก

์ง€๋‚œ 10์ฃผ ์Šคํ„ฐ๋”” ๋•Œ์™€ ๋‹ค๋ฅด๊ฒŒ, ์ด๋ฒˆ์—” ๊ฐ•์˜๋ฅผ ํ•˜๋‚˜์”ฉ ๋‹ค ๋“ฃ๊ณ  ์žˆ๋‹ค. 

์ž ์‹œ ๊ณต๋ถ€๋ฅผ ์•ˆํ•ด์„œ ๊นŒ๋จน์€ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ, ๋‹ค์‹œ ๋“ค์–ด๋ณด๋‹ˆ ์ฒ˜์Œ ๊ณต๋ถ€ํ•  ๋•Œ๋ž‘ ์ „ํ˜€ ๋‹ค๋ฅธ ๋Š๋‚Œ์ด๋‹ค. 

์ฒ˜์Œ์—” ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋์—ˆ๊ณ , ์ดํ›„์— 10์ฃผ ์Šคํ„ฐ๋””๋ฅผ ํ•  ๋• ๊ฐ•์˜๋ฅผ ์•ˆ๋“ฃ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ํ–ˆ๋‹ค. 

๋‹น์‹œ์—” ๋‚˜๋ฆ„์˜ ๋„์ „์ด๊ณ  ๋‹ต์ง€๋ฅผ ๋ณด์ง€ ์•Š๊ณ  ์Šค์Šค๋กœ ๋งŒ๋“ค์–ด๋ณด๊ฒ ๋‹ค๋Š” ๊ฐ์˜ค์˜€์ง€๋งŒ 

์š” ๋ฉฐ์น  ๊ฐ•์˜๋ฅผ ๋‹ค์‹œ ๋ณด๋ฉด์„œ ์•„ ๋‚ด๊ฐ€ ์•„๋Š” ๊ฒŒ ๋ณ„๋กœ ์—†์—ˆ๊ตฌ๋‚˜, ์ด์ „์— ๊ฐ•์˜๋ฅผ ์ œ๋Œ€๋กœ ๋“ฃ์ง€ ์•Š์•˜๊ตฌ๋‚˜ ํ•˜๋Š” ๊นจ๋‹ฌ์Œ ๋ฟ์ด๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด ์•„, ์˜ค๋งŒํ–ˆ๊ตฌ๋‚˜. ํ•˜๋Š” ํƒ„์‹. 

 

๋”๋ถˆ์–ด ํ˜„์žฌ๋กœ์ฌ ์ „๋ฐ˜์ ์ธ ๋ฆฌ์•กํŠธ๊ฐ€ ์ต์ˆ™ํ•˜๊ธฐ์— ํ›จ์”ฌ ์žฌ๋ฐŒ๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ๋น ๋ฅด๊ฒŒ ๋“ฃ๊ณ  ์žˆ๋‹ค. 

'์•„ ๋งž๋‹ค ์‹ถ์€ ๋‚ด์šฉ๋งŒ ํ•„๊ธฐ๋ฅผ ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์˜ค ์ €๋ ‡๊ฒŒ ํ•˜๋ฉด ๋์—ˆ์ง€ ๋„๋•๋„๋•' ํ•˜๋ฉด์„œ ๋“ฃ๊ณ  ์žˆ๋Š”๋ฐ, 

๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์ฐธ ์žฌ๋ฐŒ๊ตฌ๋งŒ! ์ด๋ผ๊ณ  ๋Š๋‚€ ๊ฑด ์ฒ˜์Œ์ธ ๋“ฏ ์‹ถ๋‹ค. (์ฝ”์ฝ”์•„ํ†ก ์ดํ›„์—)

ํ•ด์•ผํ•ด์„œ ํ•˜๋Š” ๊ณต๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•ด์„œ ํ•˜๋Š” ๊ณต๋ถ€์˜ ๋งˆ์ธ๋“œ๋Š” ์ด๋ ‡๊ฒŒ ๋‹ค๋ฅด๊ตฌ๋‚˜ ๋Š๋ผ๊ณ  ์žˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ทจ์—… ๋งˆ์ง€๋…ธ์„  ๊ธฐ๊ฐ„์„ ์—†์•ด๋‹ค. 

์ด ์ ๋„ ์ฆ๊ฒ๊ฒŒ ๊ณต๋ถ€ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜๊ณ  ์žˆ๋‹ค. ์šฐ์„ ์€ ์ทจ์—…๋ณด๋‹จ ๊ฐœ๋ฐœ ๊ณต๋ถ€์— ์žฌ๋ฏธ๋ฅผ ๋ถ™์—ฌ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 

๊ทธ๋ ‡๋‹ค๊ณ  ์ด์ „์— ํ–ˆ๋˜ ๋…ธ๋ ฅ๋“ค์ด ์ˆ˜ํฌ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฑด ์•„๋‹ˆ๋‹ˆ๊นŒ...!

 

 

 

๋ผ๊ณ  ์ผ์ง€๋งŒ ์š” ๋ฉฐ์น ์€ ์ง‘์ค‘์„ ๋ชปํ–ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•