Skip to content

Commit ae0c23e

Browse files
authored
Merge pull request #187 from prgrms-web-devcourse-final-project/feat/186-music-search-sheet-loading
[feat] 음악 검색 로딩 추가
2 parents a5cc5d5 + dbe9d05 commit ae0c23e

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

src/assets/lottie/loading.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

src/components/loading/LoadingMini.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
1-
import { useEffect, useState } from 'react';
21
import Lottie from 'lottie-react';
2+
import animationData from '@/assets/lottie/loading.json';
33

44
// 무한스크롤용
55
export default function LoadingMini() {
6-
const [animationData, setAnimationData] = useState(null);
7-
8-
useEffect(() => {
9-
fetch('https://cdn.lottielab.com/l/Dep5onAFaPJbNs.json')
10-
.then((response) => response.json())
11-
.then((data) => setAnimationData(data));
12-
}, []);
136
return (
147
<div className="relative w-[45px] h-[45px] overflow-hidden">
158
<Lottie

src/components/modalSheet/MusicSearchSheet.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useEffect, useRef, useState } from 'react';
66
import defaultImage from '@assets/images/default.png';
77
import axios from 'axios';
88
import { useInfiniteQuery } from '@tanstack/react-query';
9+
import LoadingMini from '../loading/LoadingMini';
910

1011
function MusicSearchSheet() {
1112
const [searchText, setSearchText] = useState('');
@@ -31,8 +32,8 @@ function MusicSearchSheet() {
3132

3233
const {
3334
data, // 가져온 데이터
34-
// isLoading, // 첫 페이지 로딩 중
35-
// isFetchingNextPage, // 다음 페이지 로딩 중
35+
isLoading, // 첫 페이지 로딩 중
36+
isFetchingNextPage, // 다음 페이지 로딩 중
3637
hasNextPage, // 다음 페이지 여부
3738
fetchNextPage, // 다음 페이지 요청 함수
3839
} = useInfiniteQuery({
@@ -95,6 +96,13 @@ function MusicSearchSheet() {
9596
</div>
9697
);
9798
}
99+
if (isLoading) {
100+
return (
101+
<div className="flex justify-center mt-5">
102+
<LoadingMini />
103+
</div>
104+
);
105+
}
98106

99107
if (!data?.pages[0].items.length) {
100108
return (
@@ -107,7 +115,7 @@ function MusicSearchSheet() {
107115
return (
108116
<div className="flex flex-col divide-y divide-gray-5">
109117
{data?.pages.map((page, index) => (
110-
<div key={index} className='flex flex-col divide-y divide-gray-5'>
118+
<div key={index} className="flex flex-col divide-y divide-gray-5">
111119
{page.items.map((music: SpotifyMusic, i: number) => (
112120
<MusicSearchList
113121
key={i}
@@ -119,6 +127,11 @@ function MusicSearchSheet() {
119127
))}
120128
</div>
121129
))}
130+
{isFetchingNextPage && (
131+
<div className="flex justify-center mt-5">
132+
<LoadingMini />
133+
</div>
134+
)}
122135
</div>
123136
);
124137
};

0 commit comments

Comments
 (0)