๐ฉบ๐ช Dr.Tart - 1์ฐจ ํ๋ก์ ํธ 1st Sprint ํ๊ณ
Dr.Tart ํ๋ก์ ํธ๋ ๋ฅํฐ์๋ฅดํธ ํํ์ด์ง๋ฅผ ํด๋ก ์ฝ๋ฉํ๋ ํ๋ก์ ํธ์ด๋ค.
๋ค๋ง ํ์ฅํ์ด ์๋ ๋์ ํธ๊ฐ ๋์ค๋๋ก...
ํ๋ก์ ํธ ์์
11์ 29์ผ ์์์ผ๋ถํฐ ํ๋ก์ ํธ๊ฐ ์์๋์๋ค.
์ฐ๋ฆฌํ์ ๋ฅํฐ์๋ฅดํธ ํํ์ด์ง๋ฅผ ํด๋ก ์ฝ๋ฉํ ์์ ์ด์๊ณ ,
๊ทธ๋ฆฌ๊ณ ์ค๋ 2์ฃผ๊ฐ์ 1์ฐจ ํ๋ก์ ํธ์ค์์ ๋ฒ์จ 1์ฃผ๊ฐ ์ง๋๋ฒ๋ ธ๋ค.
์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๊ฐ๋ฐ
๋ฅํฐํ๋ฅดํธ ํ๋ก ํธ์๋ํ์ ํต์ฌ์ ์ธ ํค์๋๋ ๋ฐ๋ก ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๊ฐ๋ฐ์ด์๋ค.
ํ๋ก ํธ์ํธํ ๊ฐ์ ํ์ด์ง๋ฅผ ํ๋์ฉ ๋ง๋, ์ปดํฌ๋ํธ๋ฅผ ํ๋์ ๊ธฐ๋ฅ ๋จ์๋ก ์ก์ ์ ์ง์ ์ผ๋ก ํ์ด์ง๋ฅผ ์์ฑ ํ ์ ์๋๋ก ํ์๊ณ , ๋ฐ๋ณต๋๋ ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ๋ ค๊ณ ๋ ธ๋ ฅํ์๋ค.
๋ด ๊ตฌํ ์ฌํญ
Nav.js
์ผ์ชฝ ์ธก๋ฉด์ ๋ถ์ด์๋ nav์ ํด๋นํ๋ ์ปดํฌ๋ํธ์ด๋ค.
ProductList.js
์ ํ ํ์ด์ง์ ํด๋นํ๋ ํ์ด์ง์ด๋ค.
์ง์ ๊ตฌํํ ์ด๋ฏธ์ง ์ฌ๋ผ์ด๋๊ฐ ๋ค์ด๊ฐ ์์ผ๋ฉฐ, ์ ํ ์ปดํฌ๋ํธ๊ฐ ์ ํ๋ง๋ค ๋ฐ๋ณต๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
react-router-dom
๋ฅผ ์ด์ฉํ์ฌ ๋์ ๋ผ์ฐํ
์ ๊ตฌํํ์๊ณ , useParams()
๋ฅผ ์ด์ฉํ์ฌ url์ parameter
๋ก ๋ฐ์์ ๊ทธ๊ฑธ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๊ตฐ์ ๋ถ๋ฅํ ์ ์๋๋ก ํ์๋ค.
Product.js
์ ํ ํ์ด์ง์์ ๊ณ์ํด์ ์ฌ์ฌ์ฉ๋๋ Product.js๋ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์งฐ๋ค.
css ์ ๋๋ฉ์ด์ ๋ถ๋ถ์์ ๊ณ์ํด์ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ด ์์ด ๋ฆฌํฉํ ๋ง์ด ํ์ํ ๋ฏ ์ถ๋ค.
import React, { useState } from 'react';
import './Product.scss';
const Product = ({ productName, productPrice, productImage }) => {
const [isProductHover, setIsProductHover] = useState(false);
return (
<div
className="product"
onMouseOver={() => setIsProductHover(true)}
onMouseOut={() => setIsProductHover(false)}
>
<div className="productContainer">
<div className="productImageWrapper">
<img
className="productImage"
alt="example"
src="/images/tartexam.jpg"
/>
</div>
<div className="productName">{productName}</div>
<div className="productPrice">{Math.round(productPrice)}์</div>
</div>
{isProductHover && (
<div
className={`productEffectContainer ${
isProductHover ? 'mountAnimation' : ''
}`}
>
<div className="effectContents">
<div className="productButtonContainer">
<button className="productBuyButton">๊ตฌ๋งคํ๊ธฐ</button>
<button className="productCartButton">
<i className="fas fa-shopping-cart" />
</button>
<button className="productLikeButton">
<i className="far fa-heart" />
</button>
</div>
</div>
</div>
)}
</div>
);
};
export default Product;
ImageSlide.js
2nd Sprint์์ ํด์ผํ ์ผ
์ผ๋จ ์์ง ์์ฑ๋์ง ๋ชปํ ์ฅ๋ฐ๊ตฌ๋, ๊ฒฐ์ ํ์ด์ง์ ์์ฑ์ด ํ์ํ๋ค.
๋ํ ์์ง ๋ฐฑ์๋์์ ์ ํฉ์ด ์๋ฒฝํ์ง ์์ ์ํ์ด๋ฏ๋ก ์ข ๋ ์์ฑ๋๋ฅผ ๋์ผ ํ์๊ฐ ์์ ๊ฒ ๊ฐ๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฉบ๐ช Dr.Tart - 1์ฐจ ํ๋ก์ ํธ 1st Sprint ํ๊ณ ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kgpaper/Dr.Tart-1์ฐจ-ํ๋ก์ ํธ-1์ฃผ์ฐจ-ํ๊ณ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค