728x90
반응형
1. 로딩화면 컴포넌트 생성 (Loading.jsx)
import React from 'react';
import styled from 'styled-components';
import Spinner from '../assets/imgs/Loading/Spinner.gif';
const Loading = () => {
return (
<ScDivBackground>
<img src={Spinner} alt="로딩중" width="5%"></img>
</ScDivBackground>
);
};
const ScDivBackground = styled.div`
position: absolute;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
background-color: #ffffffb7;
z-index: 999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
`;
export default Loading;
2. styled-components 추가 (yarn add styled-components)
(1) 배경 : ScDivBackground
(2) 로딩중 이미지 : img src => 스피너 홈페이지에서 gif 다운로드한 파일
3. 스피너 다운로드 (회원가입 후 free 사용하기)
(1) 원하는 스피너 선택후 background 투명율 제일 낮추기
(2) GIF 클릭해서 저장
(3) vscode에 src - assets - imgs - Loading - Spinner.gif 파일 넣고 코드에서 import하기
4. 로그인 / 회원가입 / 회원정보 변경하는 파일에서 사용하기
(로그인 시 : Login.jsx)import React, {useState} from 'react';
import {createUserWithEmailAndPassword} from 'firebase/auth';
import {auth} from '../shared/firebase';
import styled from 'styled-components';
import Loading from '../components/Loading';
const Join = () => {
const [loading, setloading] = useState(false);
//로그인 버튼
const signUp = async data => {
try {
setloading(true);
await createUserWithEmailAndPassword(auth, data.email, data.password);
setJoinData(JSON.parse(JSON.stringify(data.nickname)));
setloading(false);
} catch (error) {
setloading(false);
}
};
return (
<StDivWrap>
{loading ? <Loading /> : null}
<StDivTop>
<h1>Welcome at YalolJa</h1>
</StDivTop>
</StDivWrap>
);
};
const StDivWrap = styled.div`
width: 600px;
height: 100vh;
margin: auto;
padding-top: 60px;
`;
const StDivTop = styled.div`
font-weight: 400;
font-size: 20px;
& p {
font-size: 15px;
margin-top: 8px;
}
`;
export default Join;
(1) Loading.jsx화면 import
(2) useState를 활용해서 관리 => loading & setloading
(3) return문 아래 {loading? <Loading> : null}
-> 삼항연산자 사용해서 true이면 로딩스피너 보여주고 아니면 null처리해서 안보여주기
(4) 로그인 버튼 클릭시 : setloading(true)로 해서 보여줌 + 비동기처리 끝나면 setloading (false) 처리하여 숨김
(5) 오류가 난 케이스에는 : setloading (false) 해줘야 오류가 나고 안 보이게 됨
끝.
반응형
'TIL :: Today I Learned' 카테고리의 다른 글
리액트 기술면접 대비 (1) (0) | 2024.01.05 |
---|---|
최종 프로젝트 구현 : 와이어프레임 (1) | 2024.01.04 |
파이어베이스 + 리코일 오류 : Cannot assign to read-only property 'currentUser' of object '#<AuthImpl> (1) | 2023.12.28 |
form 유효성검사에 react-hook-form 라이브러리 적용 (0) | 2023.12.27 |
리액트 : 심화 프로젝트 기획 (0) | 2023.12.26 |