๐Ÿฉบ๐Ÿช Dr.Tart - 1์ฐจ ํ”„๋กœ์ ํŠธ 1st Sprint ํšŒ๊ณ 

13101 ๋‹จ์–ด WeCodeprojectWeCode

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์—์„œ ํ•ด์•ผํ•  ์ผ

์ผ๋‹จ ์•„์ง ์™„์„ฑ๋˜์ง€ ๋ชปํ•œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๊ฒฐ์ œ ํŽ˜์ด์ง€์˜ ์™„์„ฑ์ด ํ•„์š”ํ•˜๋‹ค.

๋˜ํ•œ ์•„์ง ๋ฐฑ์—”๋“œ์™€์˜ ์ ‘ํ•ฉ์ด ์™„๋ฒฝํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฏ€๋กœ ์ข€ ๋” ์™„์„ฑ๋„๋ฅผ ๋†’์ผ ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ