Like / Review star in react
리뷰 평점에 맞게 별이 채워지는 코드. 밸런스 있게 js와 scss 그리고 이에 맞는 별 이미지도 있어야지 구현되기에 짧고 작지만 마음에 들었다.
Code Review
//React
//parent component
...
<ReviewStarBar score={rating} />
...
//in ReviewStarBar
export class ReviewStarBar extends Component {
render() {
const { score } = this.props;
const stars = (100 / 5) * score;
return (
<div className="ReviewStarBar">
<div style={{ width: `${stars}%` }} className="reviewStar" />
</div>
);
}
}
//Sass
.ReviewStarBar {
display: inline-block;
position: relative;
width: 120px;
height: 25px;
&::before {
content: '';
position: absolute;
top: 2px;
left: 2px;
width: 100%;
height: 100%;
background-image: url('assets/images/star.svg');
opacity: 0.2;
}
.reviewStar {
background-color: var(--color-black);
height: 100%;
position: relative;
mask-image: url('assets/images/star.svg');
mask-mode: alpha;
}
}
Output
Things to improve
- 재활용성 증진
font-size
에 영향을 받는게 만들면 좋을거 같다.
- 상호작용
- 앞으로의 프로젝트에서 input기능에 쓰일 경우를 위해 사용자들을 즐길 수 있는 다양한 상호작용 기능을 추가하자.
Resource
- Like / 라이키, 나이키 클론 프로젝트
- 홈 페이지는 AWS S3를 이용해 배포하였다.
- 시연 영상
- Front-end github
- Back-end github
- 백엔드 API 설계
- Trello