โ๏ธ 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
'๐ฅธReview > ๊ฐ์ ๋ฆฌ๋ทฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฑ์ฉ ๋ถํฉ์๋ ๊ฐ๋ฐ์ ์ค๊ณ ์ ์ ์ผ๋ก ์ทจ์ ํ๋ ๋ฒ (0) | 2024.06.25 |
---|---|
์ฝ๋ฉํ ์ค๋ฌดPT ํ๊ธฐ ์ฑ๋ฆฐ์ง_๋ฆฌ์กํธ ๊ฐ์ 4์ฃผ์ฐจ ํ๊ธฐ (0) | 2023.02.10 |
์ฝ๋ฉํ ์ค๋ฌดPT ํ๊ธฐ ์ฑ๋ฆฐ์ง_๋ฆฌ์กํธ ๊ฐ์ 2์ฃผ์ฐจ ํ๊ธฐ (2) | 2023.01.29 |
์ฝ๋ฉํ ์ค๋ฌดPT ํ๊ธฐ ์ฑ๋ฆฐ์ง_๋ฆฌ์กํธ ๊ฐ์ 1์ฃผ์ฐจ ํ๊ธฐ (0) | 2023.01.21 |
2023 ์น ํธ๋ ๋ (0) | 2022.12.20 |