Loader.jsx
import "./Loader.css";
const Loader = () => {
return (
<div>
<div className="lds-ellipsis">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
);
};
export default Loader;
Loader.css
.lds-ellipsis {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-ellipsis div {
position: absolute;
top: 33px;
width: 13px;
height: 13px;
border-radius: 50%;
background: #cdcdcd;
animation-timing-function: cubic-bezier(0, 1, 1, 0);
}
.lds-ellipsis div:nth-child(1) {
left: 8px;
animation: lds-ellipsis1 0.6s infinite;
}
.lds-ellipsis div:nth-child(2) {
left: 8px;
animation: lds-ellipsis2 0.6s infinite;
}
.lds-ellipsis div:nth-child(3) {
left: 32px;
animation: lds-ellipsis2 0.6s infinite;
}
.lds-ellipsis div:nth-child(4) {
left: 56px;
animation: lds-ellipsis3 0.6s infinite;
}
@keyframes lds-ellipsis1 {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes lds-ellipsis3 {
0% {
transform: scale(1);
}
100% {
transform: scale(0);
}
}
@keyframes lds-ellipsis2 {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(24px, 0);
}
}
SingleProductPage.jsx 의 에러와 화면 출력 사이에 로딩일 경우 Loader 출력하게 한다.
{error && <em className="form_error">{error}</em>}
{isLoading && <Loader />}
{product._id && (
'FRONTEND > React' 카테고리의 다른 글
[myCart] Postman으로 signup 테스트 및 signup 함수로 가입 (0) | 2023.12.20 |
---|---|
[myCart] 상품 상세 페이지 수량 증감 버튼 (0) | 2023.12.20 |
[myCart] 상품 상세 페이지 (1) | 2023.12.20 |
[myCart] 페이지네이션 (0) | 2023.12.20 |
[myCart] 카테고리 별 상품 출력 (0) | 2023.12.20 |