React Slick 설치
npm i react-slick
아래의 css 도 설치해 줍니다.
npm install slick-carousel
기본 Slider 생성
css 를 불러와야합니다.
import React from "react";
import Slider from "react-slick";
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
export default function SimpleSlider() {
var settings = {
dots: true,
infinite: true,
speed: 500,
slidesToShow: 1,
slidesToScroll: 1
};
return (
<Slider {...settings}>
<div>
<h3>1</h3>
</div>
<div>
<h3>2</h3>
</div>
<div>
<h3>3</h3>
</div>
<div>
<h3>4</h3>
</div>
<div>
<h3>5</h3>
</div>
<div>
<h3>6</h3>
</div>
</Slider>
);
}
현재 선택된 슬라이드 index 값 가져오기
useState를 활용하여 현재 슬라이드의 index를 넣어줍니다.
react-slick의 api문서의 beforeChange를 통해 받아올 수 있습니다.
beforeChange
Type: func
Default: null
Description: Index change callback. `(oldIndex, newIndex) => ...`
const [slideIndex, setSlideIndex] = useState(0);
const settings = {
dots: true,
infinite: true,
speed: 500,
slidesToShow: 1,
slidesToScroll: 1
beforeChange: (current, next) => {
return setSlideIndex(current);
},
};
슬라이드 컴포넌트별로 현재 선택된 슬라이드인지 비교합니다.
슬라이드는 0부터 시작합니다.
<Slider {...settings}>
<Slide border={0==slideIndex}>
<h3>1</h3>
</div>
<Slide border={1==slideIndex}>
<h3>2</h3>
</div>
<Slide border={2==slideIndex}>
<h3>3</h3>
</div>
<Slide border={3==slideIndex}>
<h3>4</h3>
</div>
<Slide border={4==slideIndex}>
<h3>5</h3>
</div>
<Slide border={5==slideIndex}>
<h3>6</h3>
</div>
</Slider>
현재 선택된 슬라이드가 맞으면 true 아니면 false를 porps.border로 전달해줍니다.
전달 받은 props.border가 true 이면 빨간색 테두리 아니면 none으로 스타일링 해줍니다.
const Slide = styled.div`
border:${(props)=> (props.border ? "1px solid red" : "none")}
`;
'Usage > ReactJS' 카테고리의 다른 글
스크롤할때 특정 컴포넌트 영역에 들어가면 나타나는 요소 구현 (0) | 2021.03.21 |
---|---|
Table of Contents 스크롤 메뉴 구현 (0) | 2021.03.21 |
React Tab Menu 구현 (0) | 2021.03.18 |