DEVLOG
Next.js ํ๋ก์ ํธ :: getServersideProps ๋ณธ๋ฌธ
๐ ๋ชฉ์ฐจ
๐ ์ SSR์ ๋์ ํ๋ ค๊ณ ํ๋๊ฐ?
์ด์ ๊ธ์์ react-query
๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ํ์ด์ง์ ๊ทธ๋ ค์ฃผ์๋ค.
ํ์ง๋ง ํด๋ผ์ด์ธํธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ์ง์
์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด getServerSideProps
๋ฅผ ์ด์ฉํ์ฌ react-query
์ initialData๋ฅผ ์ฑ์์ฃผ์๋ค.
๊ทธ๋ฐ๋ฐ ์์ ์ ํ๋ค๋ณด๋,,, ๋ด๊ฐ ์ง๊ธ ์ฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ณํ ์ผ์ด ์ผ๋ง๋ ์๋ค๊ณ ๊ตณ์ด react-query๋ฅผ ์ด์ฉํ์ฌ ๊ณ์ํด์ ํ์ด์ง๋ฅผ ์ ๋ฐ์ดํธ ํด์ผํ ํ์๊ฐ ์์๊น? ์ฌํฌ์ปค์ฑ์ด ๋ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ์๋ก ๋ถ๋ฌ์์ฃผ๋๊ฒ ๋ง์๊น?ํ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋์ ์ฌ๋ ๋๋ง๋๋ ๋ฌธ์ ๋ฅผ ์์ ๊ณ , SEO๋ฅผ ๋์ด๊ธฐ ์ํด ์๋ฒ์ฌ์ด๋์์ ๋ฐ์ดํฐ๋ฅผ ํธ์ถํด์ ํ์ด์ง๋ฅผ ์ถ๋ ฅํ๊ณ ๋ด๋ถ์์ ์ ๋ฐ์ดํธ ๋๋ react-query๋ฅผ ์ญ์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๋ค.
๊ทธ๋ฌ๋๋ ์๋ฌด ๋ฌธ์ ๋ ์์ด ์ ๊ตฌํ๋์๊ณ , ์ค์ ๋ก ๋๋ผ๋ ํ์ด์ง ์ ํ ์๋๋ ํจ์ฌ ๋ ๋นจ๋ผ์ง ๊ฒ ๊ฐ์๋ค!
๐ ์ํ๋ฆฌ์คํธ์กฐํ(๋ฉ์ธ)
const Home: NextPage<HomePageProps> = (props) => {
const { popular, topRated, nowPlaying, upcoming } = props;
...
};
export default Home;
...
//getServerSideProps์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด ์ปดํฌ๋ํธ์ props๋ก ๋๊น
export const getServerSideProps: GetServerSideProps = async () => {
const popular = await getMovieList("popular");
const topRated = await getMovieList("top_rated");
const nowPlaying = await getMovieList("now_playing");
const upcoming = await getMovieList("upcoming");
return {
props: {
popular: popular.results,
topRated: topRated.results,
nowPlaying: nowPlaying.results,
upcoming: upcoming.results,
},
};
};
๐ ์ํ์ ๋ณด์กฐํ(์์ธ)
const Contents: NextPage<ContentPageProps> = (props) => {
const { content, similar, recommend } = props;
...
}
export default Contents;
...
//getServerSideProps์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด ์ปดํฌ๋ํธ์ props๋ก ๋๊น
export const getServerSideProps: GetServerSideProps = async ({
params,
}: any) => {
const contentData = await getMovieInfo(params.id);
const creditData = await getCredits(params.id);
const similarData = await getSimilar(params.id);
const recommendData = await getRecommendations(params.id);
return {
props: {
params,
content: { ...contentData, ...creditData },
similar: similarData.results,
recommend: recommendData.results,
},
};
};
โ unexpected end of file ์ค๋ฅ
๋ฌธ์ ์์ด ์์ ์ ์งํํ๋ ์ค ๊ฐ์๊ธฐ ์๋์ ๊ฐ์ด axios์ธก์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
Server Error
Error: unexpected end of file
This error happened while generating the page. Any console logs will be displayed in the terminal window.
์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํด๋น ์ค๋ฅ๊ฐ axios ๋ฒ์ 1.2์ด์์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ผ๋ ๊ฒ์ ์์๋ด์๊ณ , axios๋ฅผ 1.1.3์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํจ์ผ๋ก์จ ํด๊ฒฐํ๋ค.
๐ Next?
๋ฉ์ธํ์ด์ง์์ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ carousel๋ก ์ ์ํ ์์ ์ด๋ค.
'frontend > next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Next.js ํ๋ก์ ํธ :: infinite scroll ๊ตฌํํ๊ธฐ (0) | 2023.07.12 |
---|---|
Next.js ํ๋ก์ ํธ :: carousel ๊ตฌํํ๊ธฐ (0) | 2023.06.22 |
Next.js ํ๋ก์ ํธ :: Open API (TMDB), React-Query (0) | 2023.06.22 |
Next.js ํ๋ก์ ํธ :: ์ธํ (0) | 2023.06.22 |
Next.js ์์ํ๊ธฐ (0) | 2023.06.19 |