ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
Lottie๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ก๋ฉ ํ๋ฉด์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์๋๋ ๊ตฌํ ์์์ ๋๋ค.
๋ก๋ฉ ํ๋ฉด ์์
Lottie ์ฌ์ดํธ ๋งํฌ
1. Lottie ์ค์น
Lottie๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ํฐ๋ฏธ๋(Ctrl+J) ์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ค์นํ ์ ์์ต๋๋ค.
npm install react-lottie
2. import
Lottie๋ฅผ ์ค์นํ ํ์๋, ์ํ๋ ์ปดํฌ๋ํธ์ import ํด์ค๋๋ค.
import Lottie from 'react-lottie';
3. ๋ํ, ์ฌ์ฉํ ์ ๋๋ฉ์ด์ ์ JSON ํ์ผ์ import ํด์ค๋๋ค.
import LoadingAnimation from '../lottie/loading.json';
ํ์ผ ๊ฒฝ๋ก์ ๋ง๊ฒ ์ ์ ํ ์ ๋ ฅํ์๋ฉด ๋ฉ๋๋ค.
4. ์ปดํฌ๋ํธ
Loading.jsx
import React from 'react';
import Lottie from 'lottie-react';
import LoadingAnimation from '../lottie/loading.json'; // ๋ก๋ฉ ์ ๋๋ฉ์ด์
JSON ํ์ผ ๊ฒฝ๋ก
const Loading = () => {
return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100vh' }}>
<Lottie animationData={LoadingAnimation} loop autoPlay />
</div>
);
};
export default Loading;
5. loading.json
lottie์์ ๋ค์ด๋ก๋๋ฐ์ loading.json ํ์ผ์ src ๋ด๋ถ์ ์ฒจ๋ถํฉ๋๋ค.
6. ๋ก๋ฉ ์ค์
์ ์ ํ ์์น์ ๋ก๋ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
App.js
function App() {
const [message, setMessage] = useState("");
const [isLoading, setIsLoading] = useState(true); // ๋ก๋ฉ ์ํ๋ฅผ ๊ด๋ฆฌ
useEffect(() => {
// ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋น๋๊ธฐ ์์
์ ์๋ฎฌ๋ ์ดํธ
setTimeout(() => {
fetch('/media/cardata')
.then(response => response.text())
.then(message => {
setMessage(message);
setIsLoading(false); // 2์ด ํ์ ๋ก๋ฉ ์๋ฃ๋ก ์ค์
});
}, 2500); // 2์ด ์ง์ฐ
}, []);
return (
<>
{isLoading ? (
<Loading />
) : (
)}
</>
);
}
export default App;
์์ ๊ฐ์ ๊ณผ์ ์ ํตํด loading ํ๋ฉด์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.