๐ŸฅธReview/๊ฐ•์˜ ๋ฆฌ๋ทฐ

์ฝ”๋ฉ˜ํ†  ์‹ค๋ฌดPT ํ›„๊ธฐ ์ฑŒ๋ฆฐ์ง€_๋ฆฌ์•กํŠธ ๊ฐ•์˜ 3์ฃผ์ฐจ ํ›„๊ธฐ

hellohailie 2023. 2. 9. 14:12

โœ”๏ธ 2์ฃผ์ฐจ ๊ณผ์ œ์—์„œ ํ”ผ๋“œ๋ฐฑ ๋ฐ›์€ ๋‚ด์šฉ

์ฐจํŠธ๋ฅผ chart.js ํŒŒ์ผ๋กœ ์ปดํฌ๋„ŒํŠธ๋กœ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•œ ์ ์ด ์ข‹์Œ.

html/css๋กœ ๊ตฌ์„ฑ๋œ ํŒŒ์ผ์„ ๋ฆฌ์•กํŠธ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ class๋ฅผ className์œผ๋กœ ๊ผญ ๋ฐ”๊พธ๊ธฐ!!

๊ธฐ์กด์˜ a ํƒœ๊ทธ์— ์žˆ๋˜ html ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ณธ ๊ฒฝ๋กœ์ธ /๋กœ ๋ฐ”๊พธ๊ธฐ.

 

 

โœ”๏ธ 3์ฃผ์ฐจ ์‹ค๋ฌด PT ์ฃผ์ œ

๋™์  ํ™”๋ฉด ๊ตฌํ˜„์„ ์œ„ํ•œ React์˜ state/props + useState์™€ useEffect

 

 

โœ”๏ธ ์ด๋ฒˆ ์ฃผ ์ˆ˜์—…์„ ํ†ตํ•ด์„œ ๋ฐฐ์šด ์ 

โ–  State์™€ Props

state - ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๊ด€๋ฆฌ ๋˜๊ณ , ๋ฐ”๋€Œ๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ (= ๋ณ€์ˆ˜)

๋ณ€ํ•˜๋Š” ๊ฐ’์€ ์ƒํƒœ์—, ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์€ ๊ทธ๋ƒฅ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!

Props - ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ (๋ถ€๋ชจ->์ž์‹ ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„)

์ž์‹์—์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ์˜ ๋ฐฉํ–ฅ์€ ๋ถˆ๊ฐ€๋Šฅ!

๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ชจ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ props๋กœ ๋„˜๊ธธ๋•Œ๋Š” ์ฝ๊ธฐ ๋ฒ„์ „ ๋ฐ–์— ์•ˆ๋œ๋‹ค. 

 

 

โ–  React Hooks๋ž€?

๋ฆฌ์•กํŠธ 16.8๋ฒ„์ „๋ถ€ํ„ฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์œผ๋กœ, state์™€ ์—ฌ๋Ÿฌ React ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Hooks ๊ทœ์น™

  • ์ตœ์ƒ์œ„์—์„œ๋งŒ Hooks์„ ํ˜ธ์ถœ
  • ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ํ˜ธ์ถœ
  • ๊ฐ™์€ Hook์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ ๊ฐ€๋Šฅ

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” React Hook

useState : ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Hook
useEffect : 
์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” Hook

 


โ–  useState = ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ(state)๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Hook

import React, { useState } from 'react’; 
const [number, setNumber] = useState(0);

useState๋Š” ๊ตฌ์กฐ๋ถ„ํ•ด ํ• ๋‹น์„ ์ด์šฉํ•œ๊ฑฐ๋‹ค.

 

๊ทธ๋Ÿผ ์™œ ๊ตณ์ด useState๋ฅผ ์‚ฌ์šฉํ• ๊นŒ? => ์ƒํƒœ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ณ€๊ฒฝ๋  ๋•Œ HTML์—๋„ ์•Œ์•„์„œ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.

โšก๏ธ ์ž๋™ ์žฌ๋ Œ๋”๋ง์ด ๋œ๋‹ค.

โšก๏ธ ํŽ˜์ด์ง€ ๋ฒ„๋ฒ…์ž„์ด๋‚˜ ์ƒˆ๋กœ๊ณ ์นจ๋˜๋Š”๊ฒŒ ์—†๋‹ค.


->
์ƒˆ๋กœ๊ณ ์นจ ์—†์ด๋„ HTML์„ ๋ฐ”๊ฟ” ๋ณด์—ฌ์ฃผ๋Š” ์›น์•ฑ๊ฐ™์€ ์‚ฌ์ดํŠธ ์ œ์ž‘ ๊ฐ€๋Šฅํ•˜๋‹ค!

โ—๏ธ ์›น์•ฑ์ฒ˜๋Ÿผ ๋งŒ๋“ค๊ธฐ ์‹ซ๊ฑฐ๋‚˜ ์ž์ฃผ ๋ณ€๊ฒฝ ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๊ทธ๋ƒฅ var let const ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๊ด€โ—๏ธ

 


โ–  useEffect = ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฒ˜์Œ ๋‚˜ํƒ€๋‚  ๋•Œ, ์—…๋ฐ์ดํŠธ ๋  ๋•Œ (ํŠน์ • props๊ฐ€ ๋ฐ”๋€” ๋•Œ), ๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋ผ์งˆ ๋•Œ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•จ

์ฒ˜์Œ ๋‚˜ํƒ€๋‚  ๋•Œ = componentDidMount  

 

์—…๋ฐ์ดํŠธ ๋  ๋•Œ = componentDidUpdate (props๊ฐ€ ๋ฐ”๋€Œ๋Š” ์‹œ์ , state๊ฐ€ ๋ฐ”๋€Œ๋Š” ์‹œ์ , ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜๋Š” ์‹œ์ , dom์ด ๋ณ€๊ฒฝ๋  ๋•Œ)

์‚ฌ๋ผ์งˆ ๋•Œ = componentWillUnmount

 


import React, { useEffect } from 'react’;
useEffect (() => {
    console.log("Data changed!");
}, [data]);

 

์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•จ์ˆ˜, ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์˜์กด๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด (์—†์–ด๋„ ๋ฌด๊ด€)

  • ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋œ๋‹ค. 
  • ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋นˆ์นธ์ด๋ฉด [] ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฒ˜์Œ ๋‚˜ํƒ€๋‚  ๋•Œ๋งŒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. 
  • return์— ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ cleanup ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. 
  • cleanup ํ•จ์ˆ˜๋Š” useEffect ์— ๋Œ€ํ•œ ๋’ท์ •๋ฆฌ๋ฅผ ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

 


โ–  Javascript ๊ณ ์ฐจํ•จ์ˆ˜ (ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ)

Map

๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด ๋ฐ˜ํ™˜

const numberArr = [1,2,3,4,5];
const numberMapArr = numberArr.map(item => item%2 === 0 ? '์ง์ˆ˜' : 'ํ™€์ˆ˜')
console.log(numberMapArr);
//['ํ™€์ˆ˜', '์ง์ˆ˜', 'ํ™€์ˆ˜', '์ง์ˆ˜', 'ํ™€์ˆ˜']

Filter

๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ์š”์†Œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด ๋ฐ˜ํ™˜

const numberArr = [1,2,3,4,5];
const numberFilterArr = numberArr.filter(item => item%2 === 0)
console.log(numberFilterArr);
//[2, 4]

 

Sort

๋ฐฐ์—ด ์ •๋ ฌํ•  ๋•Œ ์‚ฌ์šฉ, ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ• ์ง€ ์ง€์ •

const numberArr = [4,5,2,3,1];
numberArr.sort((a,b) => a-b) /// [1, 2, 3, 4, 5]
numberArr.sort((a,b) => b-a) /// [5, 4, 3, 2, 1]

 

 


https://codesandbox.io/s/react-map-forked-uwo2tp?file=/src/data.js 

 

react map (forked) - CodeSandbox

react map (forked) by HelloHailie using react, react-dom, react-scripts

codesandbox.io

 

 


https://bit.ly/3D9XCOz

 

์„ฑ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š” ํ˜„์ง์ž์˜ ์‹ค๋ฌด ๋…ธํ•˜์šฐ ใ…ฃ ์ฝ”๋ฉ˜ํ† 

๋‚ด ์‹ค๋ฌด์— ์ ์šฉํ•˜๋ฉฐ ์„ฑ๊ณผ๋‚ด๋Š”, ์ง„์งœ ์‹ค๋ฌด ํผ์Šค๋„ ํŠธ๋ ˆ์ด๋‹!

comento.kr