Spring Boot
좋아요 버튼 만들기
have a good time
2021. 11. 16. 19:44
좋아요 - 하트 버튼 누르면 빨간색으로 채워지게 하고,
좋아요 취소 - 다시 하트 버튼을 누르면 빨간색 사라지면서 취소
<jsp 파일>
<button>`;
if(image.likeState){
item += `<i class="fas fa-heart active" id="storyLikeIcon-${image.id}" onclick="toggleLike(${image.id})"></i>`;
}else{
item += `<i class="far fa-heart" id="storyLikeIcon-${image.id}" onclick="toggleLike(${image.id})"></i>`;
}
item += `
</button>
좋아요 버튼 누르면, likeState = true 가 되도록 구현해놨음
-> 그래서 likeState 라면, class = "fas fa -heart active"가 되도록 하고,
좋아요 버튼을 누르지 않았다면, likeState = false가 되서,
-> class = "far fa-heart"가 되도록 함
이것을 toggleLike 함수를 js 에 구현해서 적용시킴.
<js 파일>
function toggleLike(imageId) {
let likeIcon = $(`#storyLikeIcon-${imageId}`);
if (likeIcon.hasClass("far")) { // 좋아요
$.ajax({
type: "post",
url: `/api/image/${imageId}/likes`,
dataType: "json"
}).done(res=>{
let likeCountStr = $(`#storyLikeCount-${imageId}`).text();
let likeCount = Number(likeCountStr) + 1;
$(`#storyLikeCount-${imageId}`).text(likeCount);
//**************************
likeIcon.addClass("fas");
likeIcon.addClass("active");
likeIcon.removeClass("far");
//**************************
}).fail(error=>{
console.log("오류", error);
});
} else { // 좋아요취소
$.ajax({
type: "delete",
url: `/api/image/${imageId}/likes`,
dataType: "json"
}).done(res=>{
let likeCountStr = $(`#storyLikeCount-${imageId}`).text();
let likeCount = Number(likeCountStr) - 1;
$(`#storyLikeCount-${imageId}`).text(likeCount);
//**************************
likeIcon.removeClass("fas");
likeIcon.removeClass("active");
likeIcon.addClass("far");
//**************************
}).fail(error=>{
console.log("오류", error);
});
}
}
//*********** 친 부분에서 이를 구현하고 있음.(나머지 코드는 좋아요 카운트 수 구현 등 다른 작업과 관련)
1. 좋아요 취소 -> 좋아요
if (likeIcon.hasClass("far"))
즉, likeIcon에 class값이 far을 가지고 있다면,
far fa-heart 이 값인 거고, 이는 좋아요 취소 상태이다.
따라서,
likeIcon.addClass("fas");
likeIcon.addClass("active");
likeIcon.removeClass("far");
이렇게 처리함으로써,
fas fa-heart active
이렇게, 즉 좋아요 상태가 된다.
2. 좋아요-> 좋아요 취소
역시 마찬가지이다.
<css 파일>
button:first-child
.active {
color: red;
css 에서 이런 식으로, 버튼의 color를 red 로 채워지게 하면 된다.
참고 자료 : 이지업 강의 사이트 "스프링부트 SNS 프로젝트 - 포토그램 만들기"