CRA로 만든 리액트 앱에 간단한 무료 테마를 적용해 보았다.
https://mui.com/store/items/onepirate/
Onepirate - MUI Store
An example landing and Sign Up page.
mui.com
이 테마가 내가 하려는 프로젝트와 맞는것 같아 Onepirate로 결정했다.
SignIn 페이지와 SignUp 페이지부터 붙였는데 url 매핑이 필요해서 react-router-dom을 이용해 url과 Component를 매핑해보겠다.
1. Routes 사용
먼저 컴포넌트를 소개하자면 Home("/"), SignIn("/sign-in"), SignUp("/sign-up") 이렇게 세가지 컴포넌트가 각 url와 매핑되어야 한다.
가장 간단한 방법은 그냥 BrowserRouter, Routes, Route를 이용해 직접 매핑해주는 것이다.
import React from 'react';
import { RouterProvider, BrowserRouter, Routes, Route } from 'react-router-dom';
import './App.css';
import router from './route';
import Home from './views/Home';
import SignIn from './views/sign/SignIn';
import SignUp from './views/sign/SignUp';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path='/' element={<Home />} />
<Route path='/sign-in' element={<SignIn />} />
<Route path='/sign-up' element={<SignUp />} />
</Routes>
</BrowserRouter>
);
}
export default App;
2. createBrowserRouter 사용
공식 문서에 의하면 This is the recommended router for all React Router web projects. createBrowserRouter가 웹프로젝트에 권장되는 라우터라고 한다.
그리고 path와 컴포넌트 매핑만을 담당하는 컴포넌트가 있는게 객체지향적으로도 더 좋을것 같아 createBrowserRouter를 사용하기로 했다.
createBrowserRouter를 이용해 router를 생성해주었다.
import { createBrowserRouter } from 'react-router-dom';
import App from './App';
import SignIn from './views/sign/SignIn';
import SignUp from './views/sign/SignUp';
const router = createBrowserRouter([
{
path: '/',
element: <App />
},
{
path: '/sign-in',
element: <SignIn />
},
{
path: '/sign-up',
element: <SignUp />
}
]);
export default router;
그 다음 Index 컴포넌트에서 RouterRrovider에 router를 넘겨준다.
(App 컴포넌트는 Home을 return)
import React from 'react';
import ReactDOM from 'react-dom/client';
import { Provider } from "react-redux";
import './index.css';
import reportWebVitals from './reportWebVitals';
import store from './app/store';
import router from './route';
import { RouterProvider } from 'react-router-dom';
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);
root.render(
<React.StrictMode>
<Provider store={store}>
<RouterProvider router={router}/>
</Provider>
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
그럼 이제 결과를 확인해보자~~
1) Home
2) SignIn
3) SignUp
정상적으로 페이지가 잘 나온다.
이제 전에 만들어 놓았던 서버와 연동해서 로그인을 해볼 차례!
'프로그래밍 실습 > React' 카테고리의 다른 글
리액트 초보의 Redux Toolkit 적용기 (0) | 2023.02.23 |
---|---|
React 프로젝트 생성 (0) | 2023.02.03 |
댓글