티스토리 뷰
반응형
리액트 템플릿을 이용하여 페이지 이동 중 url에 #(해시)가 붙어 있는 것을 발견했다.
리액트에서 url 에 #(해시)가 붙는 경우는 단일 페이지 애플리케이션(SPA, Single Page Application)을 이용할 경우 발견할 수 있다.
하나의 HTML 페이지 안에서 모든 기능이 동작하는 것을 SPA라고 한다. 모든 기능이 하나의 HTML 페이지 안에서 동작하기 때문에, 페이지 로딩 속도가 빠른것이 장점이라고 할 수 있다.
SPA 화면에서 #(해시)가 붙는 이유는 주로 웹 브라우저의 페이지 이동을 감지하고 해당 url을 분석해서 해당 페이지의 컴포넌트를 빠르게 렌더링하기 위해서이다. #(해시)가 없으면 웹 브라우저는 실제로 서버에 새로운 페이지를 요청할 수 있다.
본인은 템플릿 페이지를 커스텀하여 서버에 데이터를 요청한 뒤 렌더링 할 것이기 때문에 해시를 제거해야 한다.
1. 현재 소스
React Router에서 라우팅을 관리하게 되는데, 여기 부분을 수정하면 된다.
아래는 App.js의 코드 예시이다.
import { HashRouter, Routes, Route } from 'react-router-dom';
import DefaultLayout from './DefaultLayout';
import {Login, Register, Page404, Page500} from './OtherPage';
function App() {
return (
<HashRouter>
<Routes>
<Route path="/login" name="Login Page" element={<Login />} />
<Route path="/register" name="Register Page" element={<Register />} />
<Route path="/404" name="Page 404" element={<Page404 />} />
<Route path="/500" name="Page 500" element={<Page500 />} />
<Route path="/" name="Home" element={<DefaultLayout />} />
</Routes>
</HashRouter>
);
}
2. BrowserRouter 사용하기
<HashRouter> 태그 대신 <BrowserRouter>로 바꿔주자. 그러면 #(해시)가 사라진다.
만약, 다시 #(해시)가 필요하다면 <HashRouter>로 바꿔주면 url에 #(해시)가 붙는다.
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import DefaultLayout from './DefaultLayout';
import {Login, Register, Page404, Page500} from './OtherPage';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/login" name="Login Page" element={<Login />} />
<Route path="/register" name="Register Page" element={<Register />} />
<Route path="/404" name="Page 404" element={<Page404 />} />
<Route path="/500" name="Page 500" element={<Page500 />} />
<Route path="/" name="Home" element={<DefaultLayout />} />
</Routes>
</BrowserRouter>
);
}
반응형
'Web > JavaScript & JQuery' 카테고리의 다른 글
[JavaScript] 자바스크립트 some()과 every() (0) | 2024.02.01 |
---|---|
[JavaScript] 자바스크립트 padStart()와 padEnd() (0) | 2023.07.19 |
[JavaScript] 소수 구하는 방법 (0) | 2023.07.04 |
[JavaScript] 2진수 - 10진수 변환 / 10진수 - 2진수 변환 (0) | 2023.06.21 |
[JavaScript] 자바스크립트 Map 객체 (0) | 2023.06.08 |
댓글
공지사항