컴포넌트 분리기

2024. 10. 22. 17:19·FrontEnd/React

컴포넌트를 분리하던중 깨닳은것을 적고자한다

import React from "react";
import Pagenation from "../common/Pagenation";
import SearchBox from "../common/SearchBox";
import heart from "../../images/icon/heart.svg";
import "./../css/ProductList.css";
import { Link } from "react-router-dom";

const Product = ({ productLists }) => {
  return (
    <>
      {productLists?.map((data) => (
        <div key={data.id} className="product-card">
          <Link to={`${data.id}`}>
            <img src={data.images[0]} className="card-img" alt="대표사진"></img>
            <div className="product-card__cardinfo">
              <div className="name">{data.name}</div>
              <div className="price">{data.price}</div>
              <div className="count">
                <img
                  className="product-card_image-logo"
                  src={heart}
                  alt="즐겨찾기"
                />
                {data.favoriteCount}
              </div>
            </div>
          </Link>
        </div>
      ))}
    </>
  );
};

const ProductList = ({
  sortedItems,
  page,
  onChangeSort,
  onClickPage,
  gridRows,
  label,
  isLoading,
  ispageNation, //페이지네이션 (true 일시 제공)
  issearch, //검색버튼 (true 일시 제공)
}) => {
  return (
    <div className="all-product">
      <section>
        <div className={issearch ? "topbar between" : "topbar"}>
          <div className="topbar-label">{label}</div>
          {issearch && <SearchBox onChangeSort={onChangeSort} />}
        </div>
        {/* {isLoading ? (
          <div className="loading">Loading...</div>
        ) : ( */}
        <div className={`product-cardlist__${gridRows}row`}>
          <Product productLists={sortedItems} />   // 수정해야할부분!
        </div>
        {/* )} */}
      </section>
      {ispageNation && (
        <div className="all-product__bottom">
          <Pagenation onPage={page} onClickPage={onClickPage} />
        </div>
      )}
    </div>
  );
};

export default ProductList;

 

 

위에는 product라는 카드 하나의 컴포넌트와

아래는 productList 카드를 묶은 리스트 컴포넌트인데

 

코드 리뷰를 받던중 Product 컴포넌트에서 반복문을 돌리고있었다.

 

이렇게보면 리스트에서 Product 컴포넌트를 반복시켜서 컴포넌트를 렌더링해야하는데

위치가 잘못된것이다. 

 

위치를 생각하면서 개발을하자!~

 

 

'FrontEnd > React' 카테고리의 다른 글

싱글 페이지 애플리케이션이란? SPA 란?  (0) 2024.04.01
[Android] webView 와 브릿지를 사용해 통신하는방법  (0) 2022.10.19
[리액트 회원인증 구현] 3. 회원가입과 로그인 구현 ( 리덕스 )  (0) 2022.08.04
[리액트 회원인증 구현] 2. 회원가입과 로그인 구현 ( UI 제작 )  (0) 2022.07.18
[컴포넌트 제대로만들기] 1. React.memo  (0) 2022.07.18
'FrontEnd/React' 카테고리의 다른 글
  • 싱글 페이지 애플리케이션이란? SPA 란?
  • [Android] webView 와 브릿지를 사용해 통신하는방법
  • [리액트 회원인증 구현] 3. 회원가입과 로그인 구현 ( 리덕스 )
  • [리액트 회원인증 구현] 2. 회원가입과 로그인 구현 ( UI 제작 )
윤랩용
윤랩용
10배의 법칙으로 행동
  • 윤랩용
    yunrap 개발블로그
    윤랩용
  • 전체
    오늘
    어제
    • 분류 전체보기 (79) N
      • 알고리즘 (10) N
        • 알고리즘유형 (2) N
        • 코딩테스트 (2)
      • 네트워크 (2) N
      • 언어 (13)
        • HTML (0)
        • CSS (0)
        • Javascript (9)
        • Java (1)
        • 용어 (3)
      • Backend (1)
        • Spring (1)
      • FrontEnd (9)
        • React (7)
        • Next.js (0)
        • LAB(실험실) (1)
      • 자기개발 (2)
        • motivation (1)
      • BOOK (35)
        • 모던자바스크립트 DeepDive (22)
        • 인사이드 자바스크립트 (2)
      • 요즘 FE TREND 뭘까? (0)
  • 공지사항

    • 블로그를 새롭게 활성화시키겠습니다.
  • 최근 글

  • 인기 글

  • 태그

    클로저 js
    접근자프로퍼티
    __proto__
    캡슐화
    클로저
    시스템테마
    promise catch
    함수프로그래밍
    dark:
    tcp 프로토콜
    후속처리메서드
    create react app
    원시타입
    tailwind 다크모드
    프로미스체이닝
    즉시실행함수
    var키워드
    콜백패턴
    물너비구현하기
    비동기요
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
윤랩용
컴포넌트 분리기
상단으로

티스토리툴바