electron.js와 react로 데스크탑 메신저앱을 만들면서 초반에 router path를 잡아야 할 필요성을 느껴 react-router-dom을 사용했다.
또한 electron.js에서 ipcRenderer를 통해 react에서 만든 브라우저를 electron의 새 창으로 띄우고 싶어서,
react-router-dom를 통해 새 창으로 띄우려는 path를 잡아 loadURL(path주소) 이벤트를 사용할 수도 있었다.
오늘은 이 react-router-dom 개념에 대해 포스팅 해보려고 한다.
react-router-dom
react에서 라우팅을 구현하기 위한 라이브러리이다. 기본적으로, SPA(Single Page Application)에서 페이지를 다시 로드하지 않고도 다른 뷰나 컴포넌트를 표시할 수 있도록 도와준다.
다음은 react-router-dom의 주요 컴포넌트와 개념이다.
1. BrowserRouter (as Router) <BrowserRouter>
BrowserRouter(별칭으로 '<Router>')는 어플리케이션의 최상위 컴포넌트를 감싸서 모든 자식 컴포넌트들이 라우팅 기능을 사용할 수 있도록 한다. 따라서 애플리케이션의 최상위 레벨에서 한 번만 사용되어야 한다. 이 컴포넌트는 모든 라우팅 관련 컴포넌트들에게 라우팅 컨텍스트와 기능을 제공한다.
2. Routes <Routes>
Routes 컴포넌트는 여러 Route 컴포넌트를 포함하는 것으로, 실제 라우팅 로직을 정의하는 컴포넌트이다.
3. Route <Route>
'Route' 컴포넌트는 주어진 경로와 현재 URL이 일치할 때 특정 컴포넌트를 렌더링한다.
'path' prop은 URL 경로를 지정한다.
'element' prop은 해당 경로와 일치할 때 렌더링될 컴포넌트를 지정한다.
이 내용이 뭔지 이해가 안되면 아래 예시를 보면 된다.
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Profile from './Profile';
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/profile" element={<Profile />} />
</Routes>
</Router>
);
}
export default App;
예제에서는 / 경로에 대해서 Home 컴포넌트를, /about에 대해서는 About 컴포넌트를, 그리고 /profile에 대해서는 Profile 컴포넌트를 렌더링한다.
이러한 방식을 통해 사용자는 애플리케이션의 다른 부분 사이를 이동하면서도 페이지 전체를 다시 로드하지 않고 원하는 컴포넌트만 렌더링할 수 있다.
'개발 이야기 > frontend' 카테고리의 다른 글
React에서 로그인 시 callback으로 WebSocket 상태관리하기 (0) | 2023.10.18 |
---|---|
Electron 이벤트값을 다르게 설정하여 리액트 컴포넌트 재사용하기 (0) | 2023.10.13 |
props로 내려줄때 원하는 부분만 가져오기 (0) | 2023.10.09 |
리액트 yarn start시 proxy 에러 해결 방법 (1) | 2023.10.09 |
Udemy 강의 Next.js & React - The Complete Guide (incl. Two Paths!) 시작! (0) | 2023.10.09 |
댓글