안녕하세요:) 개발자 우디입니다! 아래 내용 관련하여 작업 중이신 분들께 도움이되길 바라며 글을 공유하니 참고 부탁드립니다😊
(이번에 벨로그로 이사오면서 예전 글을 옮겨적었습니다. 이 점 양해 부탁드립니다!)
로딩은 로딩바 혹은 스피너로 구현할 수 있고, 아니면 프로그레스로 구현할 수 있음
로딩을 추가하는 방법에는 여러가지가 있겠지만, 이번 기능 구현에서는 react-spinners 라이브러리를 활용함
React Spinners
설치
yarn add react-spinners
예시
import { useState, CSSProperties } from "react";
import ClipLoader from "react-spinners/ClipLoader";
const override: CSSProperties = {
display: "block",
margin: "0 auto",
borderColor: "red",
};
function App() {
let [loading, setLoading] = useState(true);
let [color, setColor] = useState("#ffffff");
return (
<div className="sweet-loading">
<button onClick={() => setLoading(!loading)}>Toggle Loader</button>
<input value={color} onChange={(input) => setColor(input.target.value)} placeholder="Color of the loader" />
<ClipLoader
color={color}
loading={loading}
cssOverride={override}
size={150}
aria-label="Loading Spinner"
data-testid="loader"
/>
</div>
);
}
export default App;
실제 코드에 적용
import PulseLoader from 'react-spinners/PulseLoader';
<PulseLoader
color="#9B9B9B"
loading={this.state.loading}
css="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%)"
size="16px"
/>