Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그누보드반응형
- 의존성문제
- git lab clone
- 동적객체
- npm start
- window 정책변경
- 글자들여쓰기
- fontawesome
- googleicon
- 웹아이콘
- 정적객체
- Git clone
- MediaQuery
- owlcarousel
- npm install
- minwidth
- XEIcon
- package.json
- node 오류
- slickslider
- 플러그인
- vscode git clone
- node설치
- 아이콘사용법
- maxwidth
- 이미지반응형
- 단어단위로떨어지기
- npm install 문제
- legacy-peer
- react npm install
Archives
- Today
- Total
어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ
페이지 이동하기 (BrowserRouter, Link, Routes, Route, useNavigate) 본문
728x90
1. Link, Routes , Route 사용 _ !! 상위 페이지에 <BrowserRouter>로 감싸줘야함 !!
📃 main.jsx
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'
import { BrowserRouter } from 'react-router-dom'
createRoot(document.getElementById('root')).render(
<BrowserRouter> // ❗❗ 필수
<App />
</BrowserRouter>
)
📃 App.jsx => ❗❗ 경로는 절대경로로 사용
import { Routes, Link, Route } from 'react-router-dom';
function App() {
const [selectedRowIndex, setSelectedRowIndex] = useState(null);
const [modal, setModal] = useState(false);
return (
<>
<Link to='/pages/tictactoe/reference/TodoList'>TODO LIST</Link> // ❗❗ 경로는 절대경로로
<Routes>
<Route path='/pages/tictactoe/reference/TodoList' element={<TodoList />} />
</Routes>
</>
)
}
하단에 다른 컴포넌트가 있으면 항상 보여짐
->
<Header />와 <Sidebar />는 return문에서 <Routes /> 바깥에 위치해 있으므로, 항상 렌더링됩니다. 즉, 현재 URL이 무엇이든 간에 무조건 화면에 표시 됨
import { Routes, Link, Route } from 'react-router-dom';
function App() {
const [selectedRowIndex, setSelectedRowIndex] = useState(null);
const [modal, setModal] = useState(false);
return (
<>
<Header /> {/* 항상 보여짐 */}
<Sidebar /> {/* 항상 보여짐 */}
<Link to='/pages/tictactoe/reference/TodoList'>TODO LIST</Link>
<Routes>
<Route path='/pages/tictactoe/reference/TodoList' element={<TodoList />} />
</Routes>
</>
)
}
❓ 하단 코드 문제점
=> test 페이지와 todolist 페이지를 왔다갔다하면 서로의 컴포넌트가 남아있음
function App() {
return (
<>
<nav>
<Link to='/pages/Test'>Test 모음</Link>
<Link to='/pages/tictactoe/reference/TodoList'>Todo List</Link>
</nav>
<Routes>
<Route path='/pages/Test' element={<Test />}/>
<Route path='/pages/tictactoe/reference/TodoList' element={<TodoList />}/>
</Routes>
</>
)
}
해결방법
📃 App.jsx
function App() {
return (
<>
<Routes>
<Route path='/' element={<Layout />}>
<Route path='pages/Test' element={<Test />}/>
<Route path='pages/tictactoe/reference/TodoList' element={<TodoList />}/>
</Route>
</Routes>
</>
)
}
export default App
📃 Layout.jsx
const Layout = () => {
return(
<>
<nav className='menu_list'>
<Link to='pages/Test'>Test 모음</Link>
<Link to='pages/tictactoe/reference/TodoList'>Todo List</Link>
</nav>
<Outlet />
</>
)
}
2. useNavigate 사용
import { useNavigate } from 'react-router-dom';
function MyComponent() {
const navigate = useNavigate();
const handleClick = () => {
navigate('/about'); // '/about' 페이지로 이동
};
return <button onClick={handleClick}>Go to About</button>;
}728x90
'개발 > 🟦 React' 카테고리의 다른 글
| 크롬에서 리액트 렌더링 되는 부분 보기 (0) | 2025.09.30 |
|---|---|
| 클래스 컴포넌트 / 함수형 컴포넌트 (1) | 2025.09.03 |
| 🟦[React] useReducer (0) | 2025.06.10 |
| 🟦[React] useMemo, useEffect 차이 (0) | 2025.06.09 |
| 🟦[React] Todo List 짜보기 (0) | 2025.06.07 |
Comments
