react 로 만드는 트위터 클론 코딩 - 2
저번시간에 이어서 이번시간에는 각종 page를 만드는것부터 시작하겠습니다.
저는 회원가입 페이지와 프로필 페이지를 만들었습니다.
-signup.js
const SignUp = () => {
return <div>회원가입</div>
}
export default SignUp;
-porfile.js
const Profile = () => {
return <div>내 프로필</div>;
};
export default Profile;
$npm run dev
를 하시면 localhost:3000 에서는 index.js 가 렌더링 되고 localhost:3000/profile 에서는 profile.js 가 렌더링 됩니다.
pages 폴더 안에서 하위 폴더도 생성이 가능합니다
about 이라는 폴더를 만들고 제이름으로된 js 파일을 만들겠습니다.
-pages/about/jongyun.js
const Jongyun = () => {
return <div>hello jongyun!</div>;
};
export default Jongyun;
다음과 같은 주소로 렌더링 됨을 알수 있습니다.
코드를 재사용하기 위해 컴포넌트들을 분리하는 작업을 하겠습니다.
-front/componets 라는 폴더를 만들고 AppLayout.js 라는 파일을 만들겠습니다.
AppLayout 에서는 PropTypes 을 사용하기 위해 라이브러리 하나를 설치합니다.
$ npm i prop-types
- AppLayout.js
import PropTypes from 'prop-types';
const AppLayout = ({ children }) => {
return (
<div>
<div>공통메뉴</div>
{children}
</div>
);
};
AppLayout.PropTypes = {
// children 이 react 의 화면의 그리는 node type 인지 검사합니다.
// typescript 를 사용하면 검사 안해도됨.
children: PropTypes.node.isRequired,
};
export default AppLayout;
그리고 이 layout을 다른 파일에 적용 시킵니다.
import AppLayout from '../components/AppLayout';
const Home = () => {
return (
<AppLayout>
<div>Hello next</div>
</AppLayout>
);
};
export default Home;
index.js의 내용이 {children} 안으로 들어갑니다.
react에서는 react.router 로 라우터를 관리했었는데 next.js 에서는 자체적인 router를 사용하여 관리합니다.
import Link from 'next/link';
-AppLayout.js
import PropTypes from 'prop-types';
import Link from 'next/link';
const AppLayout = ({ children }) => {
return (
<div>
<Link href="/">Home</Link>
<Link href="/signup">회원가입</Link>
<Link href="/profile">프로필</Link>
<div>공통메뉴</div>
{children}
</div>
);
};
AppLayout.PropTypes = {
// children 이 react 의 화면의 그리는 node type 인지 검사합니다.
// typescript 를 사용하면 검사 안해도됨.
children: PropTypes.node.isRequired,
};
export default AppLayout;
next 의 router -> Link 의 특징은 href를 a태그에 적지 않고 Link 에 적어줍니다.
코드를 좀더 예쁘게 적기 위해서 eslint 를 설치합니다.
$ npm i eslint -D
$ npm i eslint-plugin-import -D
$ npm i eslint-plugin-react -D
$ npm i eslint-plugin-react-hooks -D
-package.json
{
"name": "react-node-bird",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "next"
},
"keywords": [],
"author": "hajongyun",
"license": "ISC",
"dependencies": {
"next": "^9.5.5",
"prop-types": "^15.7.2"
},
"devDependencies": {
"eslint": "^7.20.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-react": "^7.22.0",
"eslint-plugin-react-hooks": "^4.2.0",
"prettier": "2.2.1"
}
}
eslint 를 사용하면 좋은점이 여러명이 협업을 해도 한사람이 코딩한 것 같은 코드로 유지보수를 할 수 있습니다.
eslint 파일을 만들겠습니다.
front/.eslintrc
{
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
// 환경
"env": {
"browser": true,
"node": true,
// 최신문법
"es6": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended"
],
"plugins": [
"import",
"react-hooks"
],
"rules": {}
}
eslint 는 ide 별로 따로 설정해줘야 합니다.
'React' 카테고리의 다른 글
react 로 만드는 트위터 클론 코딩 - 4 (반응형 그리드) (0) | 2021.02.21 |
---|---|
react 로 만드는 트위터 클론 코딩 - 3 (Antd, Styled Component) (0) | 2021.02.21 |
react 로 만드는 트위터 클론 코딩 - 1 (0) | 2021.02.19 |
todo-app 2 (0) | 2021.01.11 |
todo-app 만들기 (0) | 2021.01.10 |
댓글
이 글 공유하기
다른 글
-
react 로 만드는 트위터 클론 코딩 - 4 (반응형 그리드)
react 로 만드는 트위터 클론 코딩 - 4 (반응형 그리드)
2021.02.21 -
react 로 만드는 트위터 클론 코딩 - 3 (Antd, Styled Component)
react 로 만드는 트위터 클론 코딩 - 3 (Antd, Styled Component)
2021.02.21 -
react 로 만드는 트위터 클론 코딩 - 1
react 로 만드는 트위터 클론 코딩 - 1
2021.02.19 -
todo-app 2
todo-app 2
2021.01.11