반응형
오늘은 테스트 상세 페이지 & 결과 컴포넌트를 다듬었다. 가운데로 정렬해주고, 텍스트를 감싸는 div에도 width를 설정해주어 글자가 넘치면 줄바꿈 되도록 하였다. 그래도 몇 일 tailwind를 썼다고 처음보다는 덜 뚝딱대는 모습을 보여 뿌듯했다. 익숙해지기만한다면 tailwind처럼 편한 방법이 또 있을까 싶다.
참고로 아이콘은 Mui Icon을 사용해서 빠르게 넣어주었다.
공유하기 기능에 적용시킬 예쁜 alert창 라이브러리를 찾았다. 공유하기 버튼을 누르면 url이 클립보드로 복사되도록 구현했다.
const handleCopyURL = () => {
const currentURL = window.location.href;
navigator.clipboard
.writeText(currentURL)
.then(() => {
Toast.fire({
icon: "success",
title: "URL이 클립보드에 복사되었습니다!",
});
console.log("URL copied to clipboard:", currentURL);
})
.catch((error) => {
Toast.fire({
icon: "fail",
title: "URL 복사를 실패하였습니다!",
});
console.error("Failed to copy URL:", error);
});
};
복사가 완료되면 완료되었다는 alert창을 띄우고 싶어 찾아보게 되었다.
https://sweetalert2.github.io/#usage
굉장히 다양한 alert 창을 제공해주고 있어 유용하게 잘 쓰일 것 같다. 나는 토스트 창을 선택하여 적용시켜주었다.
const Toast = Swal.mixin({
toast: true,
position: "top",
showConfirmButton: false,
timer: 3000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener("mouseenter", Swal.stopTimer);
toast.addEventListener("mouseleave", Swal.resumeTimer);
},
});
const handleCopyURL = () => {
const currentURL = window.location.href;
navigator.clipboard
.writeText(currentURL)
.then(() => {
Toast.fire({
icon: "success",
title: "URL이 클립보드에 복사되었습니다!",
});
console.log("URL copied to clipboard:", currentURL);
})
.catch((error) => {
Toast.fire({
icon: "fail",
title: "URL 복사를 실패하였습니다!",
});
console.error("Failed to copy URL:", error);
});
};
이제 왠만한 컴포넌트 구성은 끝난 듯하다. 그러면 이제 API 부분을 다듬을 차례.. 먼저 json server로 연습을 하고, 카테고리별로 필터도 해보고 하드코딩한 부분들을 API 요청을 통해 이루어질 수 있게 바꿔야 한다!
그나저나 연보라색 너무 너무 이쁘다..
반응형
'프로젝트 > 오심테(오늘의 심리테스트)' 카테고리의 다른 글
[NextJS & Firestore] getStaticPaths() 사용하여 동적 라우팅해주기 (0) | 2023.05.24 |
---|---|
[NextJS & Firestore] NextJS에 Firestore 연동해보기 (0) | 2023.05.23 |
[Nextjs] 공통 컴포넌트(헤더, 네비게이션 바) 적용 및 동적 라우팅 (0) | 2023.05.20 |
[Tailwind CSS] 전체 화면 스크롤 바 없애기(Header 고정) (0) | 2023.05.19 |
[Tailwind CSS] nextjs is missing required "width" property & Error: Invalid src prop "" on `next/image` (0) | 2023.05.19 |