리액트 프로젝트를 생성하는 create-react-app
명령을 설치
이제 global로 설치해서 다음 리액트 만들때는 안해도됨
npm install -g create-react-app
npx 로 프로젝트를 생성해야하므로 npm으로 npx 설치
npm install npx -g
프로젝트 생성 (buur)
프로젝트 이름으로 영어 대문자 사용 불가능
npx create-react-app [프로젝트 이름]
cd [프로젝트 이름]
npm start
http://localhost:3000/
주소 브라우저 열림
Root.js > App.js > pages or components
Root.js
> App.js
를 최상위 Class로 하여 사용
Nav
로
Home / Recommend / Search / Mypage
이동할 것임
react-router-dom : 브라우저에서 사용되는 리액트 라우터
npm install react-router-dom --save
이후에 <router> inside another <router>
에러가 발생하여 다운그레이드 해줌
npm install react-router-dom@5.3.0
를 Root.js
에 import하여 App
을 감싸준다
// src/client/Root.js
import React from "react";
import App from '../App';
import { BrowserRouter } from 'react-router-dom';
const Root = () => (
<BrowserRouter>
<App/>
</BrowserRouter>
);
export default Root;
// src/App.js
import React from "react";
import { Route, Switch } from "react-router-dom";
import Home from './pages/Home';
import Recommend from './pages/Recommend';
import Search from './pages/Search';
import MyPage from './pages/MyPage';
import Nav from './components/Nav';
import './styles/common/App.css';
class App extends React.Component {
render() {
return (
<div className="App">
<Switch>
<Route exact path="/" component={Home} />
<Route path="/recommend" component={ Recommend} />
<Route path="/search" component={ Search} />
<Route path="/mypage" component={MyPage} />
</Switch>
<Nav />
</div>
)
}
}
export default App;
// src/styles/common/App.css
* {
box-sizing: border-box;
}
.app {
width: 100%;
height: 100%;
}
// src/components/Nav.js
import React from "react";
import { NavLink } from "react-router-dom";
import '../styles/common/Nav.css'
const Nav = () => {
return (
<nav>
<div>
<NavLink to="/">
Home
</NavLink>
</div>
<div>
<NavLink to="/recommend">
Recommend
</NavLink>
</div>
<div>
<NavLink to="/search">
Search
</NavLink>
</div>
<div>
<NavLink to="/mypage">
MyPage
</NavLink>
</div>
</nav>
);
};
export default Nav;
// src/styles/common/Nav.css
nav {
position: fixed;
bottom: 0;
width: 100%;
height: 60px;
display: flex;
border: solid 2px;
}
nav > div {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
Pages 폴더에는 router에 관련된 파일들을 넣어줌
형식다 같음
Home
/ MyPages
/ Recommend
/ Search
// src/pages/...
import React from "react";
class Home extends React.Component {
render () {
return (
<h1>Home</h1>
)
}
}
export default Home;
리액트 달인이시네요