티스토리 뷰
Server Side Rendering
only server side rendering을 할지 정할 수 있게 해주는 function.
우리가 reload를 할 때 nextjs가 이 페이지를 pre render 해주는 것을 알고 있는데 이게 초기 상태이다.
fetch나 server에서 일어나는 data 관련된 작업을 모두 한 다음 API가 모두 완료 됐을 때 페이지를 render 시킬 수 있게 할 수 있다.
헤더와 푸터를 두고 로딩을 보여주거나 vs 데이터를 받을때까지 화면을 하얀색으로 띄우고 바로 보여주거나 선택할 수 있다.
// import { useEffect, useState } from "react";
import Seo from "../components/Seo";
export default function Home({ results }) {
// const [movies, setMovies] = useState();
// useEffect(() => {
// (async () => {
// const { results } = await (await fetch(`/api/movies`)).json();
// setMovies(results);
// })();
// }, []);
return (
<div className="container">
<Seo title={"Home"} />
{/* {!movies && <h4>Loading...</h4>} */}
{results?.map((movie) => (
<div className="movie" key={movie.id}>
<img src={`https://image.tmdb.org/t/p/w500/${movie.poster_path}`} />
<h4>{movie.original_title}</h4>
</div>
))}
<style jsx>{`
.container {
display: grid;
grid-template-columns: 1fr 1fr;
padding: 20px;
gap: 20px;
}
.movie img {
max-width: 100%;
border-radius: 12px;
transition: transform 0.2s ease-in-out;
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
}
.movie:hover img {
transform: scale(1.05) translateY(-10px);
}
.movie h4 {
font-size: 18px;
text-align: center;
}
`}</style>
</div>
);
}
export async function getServerSideProps() {
// 함수 이름 바꾸면 안 됨!
// 여기에 쓰는 코드는 클라이언트에 보이지 않는다
// rewrites에 말고 여기에 API_KEY를 써도 된다
const { results } = await (await fetch(`http://localhost:3000/api/movies`)).json();
return {
props: {
results,
},
};
}'NextJS' 카테고리의 다른 글
| [NextJS] Detail Page (0) | 2022.10.17 |
|---|---|
| [NextJS] Dynamic Routes (0) | 2022.10.17 |
| [NextJS] Redirect and Rewrite (0) | 2022.10.14 |
| [NextJS] _app (0) | 2022.10.14 |
| [NextJS] Styles JSX (0) | 2022.10.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Router
- firebasecollection
- firebaseorderby
- reactquill
- webhook이란
- React
- cssmodules
- nextjsseo
- reduxtoolkit
- nextjsjsx
- stylesjsx
- 웹인쇄
- serversiderendering
- TypeScript
- 웹소캣
- reactjs
- Socket
- 404pages
- typescriptinterface
- firebasev9
- nextredirect
- typescriptclass
- typescriptfunction
- websocekt
- 파이어베이스버전9
- nextrewrite
- mediaprint
- nextjsrouter
- nextjscss
- NextJS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
글 보관함
