사용자 지정 React 별점 구성 요소 만들기
13582 단어 reacttutorialjavascript
완성된 구성 요소의 모습과 기능은 다음과 같습니다.
Create React App을 사용하여 애플리케이션을 설정하여 시작하겠습니다.
npx creat-react-app star-rating
그런 다음
/src
디렉토리에서 StarRating.js
라는 구성 요소에 대한 파일을 만듭니다. 기본 구성 요소로 시작하여 설정을 테스트한 다음 전체 기능을 구축합니다.import React, { useState } from "react";
const StarRating = () => {
return (<p>Hello World</p>);
};
export default StarRating;
다음으로 구성 요소에 로드할
App.js
파일의 내용을 바꿉니다.import StarRating from "./StarRating";
import "./App.css";
const App = () => {
return (
<div className="App">
<StarRating />
</div>
);
};
export default App;
npm start
명령을 실행하고 구성 요소가 로드되고 있는지 테스트합니다.이제
StarRating.js
파일로 돌아가서 가장 먼저 해야 할 일은 배열에 매핑하여 수행하는 구성 요소 출력 5개를 갖는 것입니다.const StarRating = () => {
return (
<div className="star-rating">
{[...Array(5)].map((star) => {
return (
<span className="star">★</span>
);
})}
</div>
);
};
★
는 별 아이콘의 HTML 엔티티 코드이지만 원하는 경우 여기에서 Font Awesome과 같은 아이콘 라이브러리를 사용할 수도 있습니다. 다음으로 클릭 시 별점을 설정하는 기능을 추가해야 합니다. 이를 위해 별을 <button>
및 onClick()
이벤트로 래핑합니다.const StarRating = () => {
const [rating, setRating] = useState(0);
return (
<div className="star-rating">
{[...Array(5)].map((star, index) => {
index += 1;
return (
<button
type="button"
key={index}
className={index <= rating ? "on" : "off"}
onClick={() => setRating(index)}
>
<span className="star">★</span>
</button>
);
})}
</div>
);
};
클릭한 별의 값(인덱스)을 저장하기 위해 State hook을 사용하고 있습니다. 선택한 등급에 따라 "켜짐"또는 "꺼짐"클래스가 추가되어 아이콘의 스타일을 지정하여 선택한 등급을 시각적으로 나타낼 수 있습니다.
App.css 파일에 추가할 CSS는 다음과 같습니다.
button {
background-color: transparent;
border: none;
outline: none;
cursor: pointer;
}
.on {
color: #000;
}
.off {
color: #ccc;
}
CSS 설정을 사용하면 클릭 시 선택된 별점을 표시하는 작동하는 구성 요소가 있습니다. 일부 추가된 상호 작용을 위해 클릭 시 선택될 등급을 나타내는 호버 효과도 구현합니다.
const StarRating = () => {
const [rating, setRating] = useState(0);
const [hover, setHover] = useState(0);
return (
<div className="star-rating">
{[...Array(5)].map((star, index) => {
index += 1;
return (
<button
type="button"
key={index}
className={index <= (hover || rating) ? "on" : "off"}
onClick={() => setRating(index)}
onMouseEnter={() => setHover(index)}
onMouseLeave={() => setHover(rating)}
>
<span className="star">★</span>
</button>
);
})}
</div>
);
};
추가 종속성이나 프레임워크가 필요 없는 사용자 지정 별 등급 구성 요소가 있습니다. 평소와 같이 이 프로젝트의 소스 코드는 GitHub에서 찾을 수 있습니다. 읽어 주셔서 감사합니다 :)
Reference
이 문제에 관하여(사용자 지정 React 별점 구성 요소 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/michaelburrows/create-a-custom-react-star-rating-component-5o6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)