e도서관/Next.js

page와 레이아웃

Heoky 2022. 1. 9. 01:00

계획한 프로젝트의 상단 메뉴 구성은 e도서관(Home), 책추천 및 구매(books), 커뮤니티(community), 실시간 대화방(chatRoom),
로그인(login), 회원가입(signup)으로 구성되어 있다.

먼저 front/components/Applayout.js 를 만든다. (상단 메뉴바는 따로 만들어 component를 분리함)

import React from 'react';
import PropTypes from 'prop-types';

const AppLayout = ({ children }) => {
  return (
    <>
      <header>
        <nav>
        <h1>
          <Link href="/">
            <a>e도서관</a>
          </Link>
        </h1>
        <ul>
          <Link href="/books">
            <a>
              <li>
                <div>책추천 및 구매</div>
              </li>
            </a>
          </Link>
          <Link href="/community">
            <a>
              <li>
                <div>커뮤니티</div>
              </li>
            </a>
          </Link>
          <Link href="/chatRoom">
            <a>
              <li>
                <div>실시간 대화방</div>
              </li>
            </a>
          </Link>
        </ul>
        </nav>
      </header>
      <main>
        <div>{children}</div>
      </main>
      <footer>
         footer
      </footer>
    </>
  );
};

AppLayout.propTypes = {
  children: PropTypes.node.isRequired,
}; // props로 받아온 children의 propType을 설정해준다.

export default AppLayout;

각 버튼을 클릭 시 해당 페이지를 렌더링 해줄것인데 이 때 그려줄 페이지를 children으로 받아온다. 이 후 그려줄 페이지는 현재 만든
AppLayout으로 html 부분을 감싸준다.

이제 각 버튼을 클릭 시 상단 메뉴 바 밑으로  페이지가 나올 것이다. pages 폴더 안에 각각 Home.js, books.js, community.js,
chatRoom.js, login.js, signup.js 파일을 생성

pages/Home.js

import React from 'react'

import AppLayout from './components/AppLayout'

const Home = () => {
	return (
    	<AppLayout>
	    	<div>Home</div>
        </AppLayout>
    );
};

export default Home;

pages/books.js

import React from 'react'

import AppLayout from './components/AppLayout'

const Books = () => {
	return (
    	<AppLayout>
	    	<div>Books</div>
        </AppLayout>
    );
};

export default Books;

pages/community.js

import React from 'react'

import AppLayout from './components/AppLayout'

const Community = () => {
	return (
    	<AppLayout>
	    	<div>Community</div>
        </AppLayout>
    );
};

export default Community;

pages/chatRoom.js

import React from 'react'

import AppLayout from './components/AppLayout'

const ChatRoom = () => {
	return (
    	<AppLayout>
	    	<div>ChatRoom</div>
        </AppLayout>
    );
};

export default ChatRoom;

pages/login.js

import React from 'react'

import AppLayout from './components/AppLayout'

const Login = () => {
	return (
    	<AppLayout>
	    	<div>Login</div>
        </AppLayout>
    );
};

export default Login;

pages/signup.js

import React from 'react'

import AppLayout from './components/AppLayout'

const Signup = () => {
	return (
    	<AppLayout>
	    	<div>Signup</div>
        </AppLayout>
    );
};

export default Signup;

이제 각 페이지 별로 기능들을 구현하면 된다.