반응형
"use client";
import NewsList from "@/components/news-list";
import { useEffect, useState } from "react";
function NewsPage() {
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState();
const [news, setNews] = useState();
useEffect(() => {
async function fetchNews() {
const response = await fetch("http://localhost:8080/news");
if (!response.ok) {
setError("Failed to fetch news.");
setIsLoading(false);
}
const news = await response.json();
setIsLoading(false);
setNews(news);
}
fetchNews();
}, []);
if (isLoading) {
return <p>Loading...</p>;
}
if (error) {
return <p>{error}</p>;
}
let newsContent;
if (news) {
newsContent = <NewsList news={news} />;
}
return (
<>
<h1>News Page</h1>
{newsContent}
</>
);
}
export default NewsPage;
리액트에서도 흔히 사용하는 방식이다.
기존에는 axios를 많이 썼는데, 요즘은 tanstackquery 사용해서 캐싱해버리더라 ㅎ
근데, 이건 권장하지 않는 방법으로 React때나 사용하던 방식.
728x90
'코딩 > Next.js' 카테고리의 다른 글
[Next.js] 캐싱 관련 코드 (2) | 2024.09.27 |
---|---|
[next.js] 서버사이트 통신 방식 (0) | 2024.09.20 |
[React] useActionState 펜딩상태를 체크할 수 있다. (0) | 2024.09.10 |
[next.js] 심심풀이 진행 중... (0) | 2022.09.14 |
[nextjs] 아무생각 없이 중첩 기능을 쓰면 망한다... (0) | 2022.09.13 |