쓰윽터디/Next.js
NEST.JS 정복하기(1)
Kkan
2023. 5. 12. 22:45
728x90
반응형
Next.js 를 하게 되었다.
해야할 일이 태산이다.
하나하나 차근차근 배워보고 익혀보자.
잘 알아두면
두고두고 쓸 기술이다!
1. getServerSideProps();
이 함수는 SSR - 서버사이드 렌더링을 지원하기 위한 함수이다.
사용하면 페이지를 요청할 때마다 서버에서 데이터를 가져와 페이지를 그릴 수 있게 된다.
기본적으로 이 함수는 비동기 함수 작성하며, 페이지를 렌더링하기 전에 서버에서 먼저 실행된다.
[1차 시도]
import axios from "axios";
function MyPage({ data }: any) { // props에서 data만 사용하도록 변경
console.log(data);
return (
<div>
<p>서버에서 가져온 데이터: {JSON.stringify(data)}</p>
</div>
);
}
export async function getServerSideProps() {
const fakeData = {
name: "John Doe",
age: 25,
email: "johndoe@example.com",
};
return {
props: {
data: fakeData,
},
};
}
export default MyPage;
서버가 없어서 일단 fakeData를 사용했다.
이렇게 하니까 'undefined'가 계속 나왔다.
뭐가 문제 였을까? 고민을 했다.
알고 보니
내가 모르고 있던 가장 기본적인 지식이 있었다.
pages 에서만 작동한다는 거다..
그 이유는 페이지가 렌더링 되기 전에 미리 데이터를 받아서 컴포넌트에 전달해야 하기 때문에,
오직 페이지에서만 사용이 가능하다고 한다.
다시 정리하면 page에 해당하는 컴포넌트만
함수를 사용할 수 있다 이말이다...
[무수한 n차 시도]
import { GetServerSideProps } from "next";
import React from "react";
const MyPage = (props: any) => {
const { name, posts } = props;
return (
<div>
<h1>Hello {name}!</h1>
<ul>
{posts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
};
export const getServerSideProps: any = async () => {
const url = "https://jsonplaceholder.typicode.com/posts";
const posts: Post[] = await fetch(url)
.then((res) => res.json());
return {
props: {
name: "Next",
posts: posts,
},
};
};
export default MyPage;
나 하루종일 뭐했니..?
제발.. 공식문서를 더 꼼꼼하게 보자
728x90
반응형