react05 ํด๋
์ปดํฌ๋ํธ ํ์ผ ๋ง๋ค ๋ jsx, js ํ์ผ ์๋ฌด๊ฑฐ๋ ์๊ด์์
props, state ๋ค์ ์ฐ์ต
jsx
header.jsx
div ํ๊ทธ ๋ณด๋ค ๋ง๋ ํ๊ทธ ํด์ฃผ๊ธฐ
props ํ๋ฉด {props.title} ํด์ผ ํ๋ ๋ฐ {title} ํด์ฃผ๋ฉด ๊ทธ๋ฅ {title} ํด์ค ์ ์์
main.jsx
section, div ๋๋ค ํด์ค๋ ๋จ
footer.jsx
contentbox.jsx
โค à start ๋ฒํผ+ .
React, à ์ง์๋ ์๊ด์์
const [fav, setFav] = useState('โค');
const fncFav = () => {
fav = (fav === 'โค') ? '๐' : 'โค';
setFav(fav) // set์ผ๋ก ์ ๋ฐ์ดํ ,
}
à ์ด๋ ๊ฒ ํ๋ฉด ์๋ฌ ๋จ const [fav, setFav] = useState('โค'); ์ด ๋ถ๋ถ์ const ๋ฅผ let ์ผ๋ก ๋ฐ๊พธ๋ฉด ์๋ฌ ์๋จ,
fav = (fav === 'โค') ? '๐' : 'โค';
setFav(fav) // set์ผ๋ก ์ ๋ฐ์ดํ
à setFav ์๊ดํธ ์์ fav ๋ง๊ณ (fav === 'โค') ? '๐' : 'โค' ๋ฃ์ด์ฃผ๋ฉด ๋ ๊ฐ์ ํจ๊ณผ
// ๋๋ฒ์งธ btn-area
let [num, setNum] = useState(0); // ๊ฐ์ฌ๋์ const, ๋๋ let ์ผ๋ก ํด์ผ ์๋ฌ ์๋ธ ์???
const fncIncrement = () => {
setNum(num >= 3 ? num = 3 : num + 1) // 3๊น์ง๋ง ์ฆ๊ฐํ๋๋ก
}
const fncDecrement = () => {
setNum(num <= 0 ? num = 0 : num - 1) // 0๊น์ง๋ง ๊ฐ์
}
à ๋๋ฒ์งธ btn-area ์ const๊ฐ ์๋๋ผ let ์ผ๋ก ํด์ผ ์๋ฌ ์๋ธ ์???
css
header
footer
contents
๋ฆฌ์กํธ์์ด์ฝ์ฆ ํ๋ฌ๊ทธ์ธ
๋ถํธ์คํธ๋ฉ ๊ฐ์๊ฑฐ
npm install react-icons --save ์ค์นํ๊ณ
์ปดํฌ๋ํธ ์์ผ๋ก ๋ถ๋ฌ์์ผ ํจ
์ฌ์ดํธ ๋ค์ด๊ฐ์ Material Design icons ์ import ๋ณต์ฌํด์ ์ํดํธ ์ชฝ์ ๋ถ์ฌ๋ฃ๊ธฐ
๊ทธ๋ฆฌ๊ณ { IconName } ์ค๊ดํธ ์์ ๋ฃ๊ณ ์ถ์ ์์ด์ฝ ์ด๋ฆ ๋ฃ๊ณ , contentbox.jsx ๋ก ๋์์์ ์์ด์ฝ ๋ฃ๊ณ ์ถ์ ๊ณณ์ < IconName /> ํด์ฃผ๊ธฐ
ํ๋ก๋ํธ ์์ดํ ์ ๋ณด ๋ฃ์ด์ ํญ ๋ง๋ค๊ธฐ
productData.json ์ ์์ดํ ์ ๋ณด๋ค ์์
ํญ ์ค์ฒฉ๊ตฌ์กฐ๋ก ๊ฐ๊ฑฐ๋ผ ์ปดํฌ๋ํธ ํด๋ ์์ ํ์ผ ๋ง๋ค ๊ฒ์
ProductTab.jsx ์ ์ ProductList.jsx , ProductItem.jsx
ํผ๋ธ๋ฆญ์ด๋ผ๋ ํด๋๋ ๋ฃจํธ๋ผ๊ณ ์ธ์
๊ตฌ๋ฌธ
๋ฐ๋ณต๋ฌธ
- for ()
- forEach()
- for in
- map
- filter() : ์กฐ๊ฑด ๋ฌ์ ํํฐ๋งํ ๋ฐ์ดํฐ๋ง ๋ฐ๋ณตํ ์ ์์
ProductTab.jsx
ํ์ดํ ํจ์์์ ํ์ค์ด๋ฉด ์ค๊ดํธ ์์ ๋ ๋๋๋ฐ map, filter ์ธ ๋ ๋ฆฌํด์ด ์์ด๋ ๋ฆฌํด์ด ๋จ
index === num ์ด๋ผ๋ ์กฐ๊ฑด์ด ์ถฉ์กฑํ๋ฉด ๋ฆฌํด์ ์์ผ์ค๋ค
์จํด๋ฆญํ๋ฉด ์๋ธ๋ฐ ๋ฐฉ์ง e. ํ๋ฆฌ๋ฒคํธ? ๋ญ์๋ฆฌ??
์ด๋ฏธ์ง 4๊ฐ ์ถ๋ ฅ : ul ์ ์ถ๋ ฅํ ๊ฑฐ๋
tab.jsx
useState(0) ์ด๊ธฐ๊ฐ ๋ฃ์ ๊ฑฐ ์์ผ๋ฉด null ์ด๋ผ๋ ๋ฃ์ด์ผ ํจ
์ฝ๋ฐฑํจ์
math.pow() : ์ ๊ณฑ
promise ์ฐ๋ฉด ๋ณต์กํ ์ฝ๋ฐฑ์ ํด๊ฒฐํ ์ ์์
'๐ฑ SeSac > ๊ณต๋ถ ๊ธฐ๋ก (๋ณต์ตํ๋ฉฐ ์ ๋ฐ์ดํธ ์ค)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[220616 / Day 30] React-Router (0) | 2022.07.05 |
---|---|
[220615 / Day 29] promise, fetch, async await, axios, useEffect (0) | 2022.07.05 |
[220610 / Day 27] props, usestate (0) | 2022.07.05 |
[220609 / Day 26] json placeholder, aos ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2022.07.05 |
[220608 / Day 25] React : copy, JSON, map (0) | 2022.07.05 |