개발

복합적이면 분리를 해야 쉬워진다.

UTD 2024. 1. 2. 00:17
import React, { useState } from 'react'
import { AnimeItem } from './AniList';
import * as S from './AniList.style';

type ItemListContainerProps = {
 
    item: AnimeItem;
  }


const ItemListContainer:React.FC<ItemListContainerProps> = ({ item }) => {
    const [currentIndex5, setCurrentIndex5] = useState(0);
        const itemsPerPage = 6;
    const handlePrevClick = () => {
     
        setCurrentIndex5((prevIndex) => (prevIndex - 1 + itemsPerPage) % itemsPerPage);
      };
 
      const handleNextClick = () => {
        setCurrentIndex5((prevIndex) => (prevIndex + 1) % itemsPerPage);
      };
 
    return  (
    <S.ItemListContainer>
      <S.LeftButton onClick={handlePrevClick}>Previous</S.LeftButton>
      {item.item_list?.map((subItem, subIndex) => (
        <S.ItemContainer
          key={subItem.id}
          style={{
            display: subIndex >= currentIndex5 && subIndex < currentIndex5 + itemsPerPage ? 'flex' : 'none',
          }}
        >
          {subItem.images && subItem.images.length > 0 && subItem.images[0].img_url && (
            <S.Image src={subItem.images[0].img_url} alt={subItem.name} />
          )}
          <p>{subItem.name}</p>
        </S.ItemContainer>
      ))}
      <S.RightButton onClick={handleNextClick}>Next</S.RightButton>
    </S.ItemListContainer>
  );
}

export default ItemListContainer

캐러셀을 만들다가 

[ { [ { } ] } ] 이런 구조를 만났는데 이걸 싱글페이지에서 해결하려고 하니 

배열을 뽑고 나열 한다음 좌우버튼을 각 리스트 양옆에 두고 버튼을 누르면 

배열에 뽑힌 모든 리스트들이 같이 움직이는 현상이 발생.

인덱스가 동일해서 발생한 현상인데 

이걸 싱글페이지에서 해결하려고 했지만 이틀을 이거에 매달려도 해결을 못함.

결국 헬프 쳤는데 [ { [ { } ] } ] 여기서  [ { } ] 이 부분을 컴포넌트로 빼고 인덱스를 여기다 주면 

리스트랑 인덱스랑 1:1로 보는 효과가 있어서  [ { [ { } ] } ] 일때 하나로 처리되던 인덱스를 개별로 주는 효과를 봄

그래서 컴포넌트로 빼고 인덱스 가져와서 돌리니 말끔히 해결.