const Modal = ({visible, children}) => {
return (
<>
<ModalOverlay visible={visible} />
<ModalWrapper visible={visible}>
{children}
</ModalWrapper>
</>
);
};
<Modal visible={false}>
<ProjectMakeForm />
</Modal>
모달이 여러개 일 경우 어떻게 관리하면 좋을 까 ..?
query: Object-객체로 구문 분석 된 쿼리 문자열입니다. 페이지에 데이터 가져 오기 요구 사항 이없는 경우 사전 렌더링 중에 빈 개체가됩니다 . 기본값은{}
pages/post/[id].js
⇒ post/1
로 접근가능예시 1
import { useRouter } from 'next/router'
const Post = () => {
const router = useRouter()
const { id } = router.query
return <p>Post: {id}</p>
}
export default Post
예시 2
pages/post/[id].js
에 대해 post/abc?test=123
로 접근했을 때 갖는 query object는 ?{ "id" : "abc", "test" : "123" }
출처:
https://programming119.tistory.com/233
[개발자 아저씨들 힘을모아]
https://velog.io/@silver2473/Next.js의-장점-2
서버사이드 렌더링
아래와 같이 async를 사용하여 export하게 되면 Next.js에서는 빌드할 때 해당 페이지를 Pre-render한다.
const Blog = ({ posts }) => {
return (
<ul>
{posts.map((post) => (
<li>{post.title}</li>
))}
</ul>
);
};
export async function getStaticProps() {
// 외부 데이터를 불러올 수 있다.
const res = await fetch("https://.../posts");
const posts = await res.json();
// { props: posts } 이렇게 return 해주면 Blog 페이지는 빌드타임시에 post를 가져온다.
return {
props: {
posts,
},
};
}
export default Blog;
Next.js 공식문서에는 아래와 같을 때 쓰라고 나와있다.
그러니까 쉽게 말해 그냥 거의 외부에서 API를 통해 데이터를 가져와 렌더링하는 모든 페이지는 써도 무방한 듯하다.
주의해야할 점은 client사이드에서 절대로 실행되지 않는다. bundle.js에도 없다!
오히려 getServerSideProps
을 써야할 때가 언제인지 아는게 좋다. 그 내용은 이어서 설명하겠다.
getServerSideProps
를 사용하는 방법은 동일히다. async로 export 해주게 되면 매 requeset 때마다 페이지에 있는 내용들을 pre-render해 줄것이다.
export async function getServerSideProps(context) {
return {
props: {}, //페이지의 초기 prop값으로 전달됨.
};
}
```jsx
뭐 사용방법도 거의 완전 동일하다.
```jsx
function Page({ data }) {
// Render data...
}
// This gets called on every request
export async function getServerSideProps() {
// Fetch data from external API
const res = await fetch(`https://.../data`);
const data = await res.json();
// Pass data to the page via props
return { props: { data } };
}
export default Page;
클라이언트 사이드에서 실행되지 않는 것과 page에서만 사용할 수 있다는 내용 역시 동일하다.
https://yohanpro.com/posts/nextjs/data-fetching
https://velog.io/@ansrjsdn/Next.js-9.3-Data-fetching
https://kyounghwan01.github.io/blog/React/next/getInitialProps/#getinitialprops-이점