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 ์“ฐ๋ฉด ๋ณต์žกํ•œ ์ฝœ๋ฐฑ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

+ Recent posts