fix: fetch 后检查 res.ok 并校验数组类型,防止错误响应导致崩溃
- panic/page.tsx: suggestions fetch 检查 res.ok + Array.isArray - profile/page.tsx: history/favorites fetch 检查 res.ok + Array.isArray
This commit is contained in:
@@ -70,9 +70,10 @@ export default function PanicPage() {
|
||||
setFetchingSuggestions(true);
|
||||
try {
|
||||
const res = await fetch(`/api/location/suggest?keywords=${encodeURIComponent(query)}`);
|
||||
if (!res.ok) { setSuggestions([]); setShowSuggestions(false); return; }
|
||||
const data: LocationSuggestion[] = await res.json();
|
||||
setSuggestions(data);
|
||||
setShowSuggestions(data.length > 0);
|
||||
setSuggestions(Array.isArray(data) ? data : []);
|
||||
setShowSuggestions(Array.isArray(data) && data.length > 0);
|
||||
} catch {
|
||||
setSuggestions([]);
|
||||
} finally {
|
||||
|
||||
@@ -93,15 +93,15 @@ export default function ProfilePage() {
|
||||
|
||||
setHistoryLoading(true);
|
||||
fetch(`/api/user/history?userId=${userId}`)
|
||||
.then((r) => r.json())
|
||||
.then(setHistory)
|
||||
.then((r) => { if (!r.ok) throw new Error(); return r.json(); })
|
||||
.then((data) => setHistory(Array.isArray(data) ? data : []))
|
||||
.catch(() => {})
|
||||
.finally(() => setHistoryLoading(false));
|
||||
|
||||
setFavLoading(true);
|
||||
fetch(`/api/user/favorite?userId=${userId}`)
|
||||
.then((r) => r.json())
|
||||
.then(setFavorites)
|
||||
.then((r) => { if (!r.ok) throw new Error(); return r.json(); })
|
||||
.then((data) => setFavorites(Array.isArray(data) ? data : []))
|
||||
.catch(() => {})
|
||||
.finally(() => setFavLoading(false));
|
||||
}, [userId]);
|
||||
|
||||
Reference in New Issue
Block a user