-
return (
<div className="AppWrapper">
<BrowserRouter>
{token ? (
<Switch>
<>
<Route path="/students" >
<div className="App" key="students">
<Header />
<DashBoard />
<div className="body">
<div className="left">
<ControlBar />
<StudentList />
</div>
<div className="border" />
<div className="right">
<Student />
</div>
</div>
<Adder />
</div>
</Route>
<Route path="/student/:id">
<div className="App" key="student/id">
<StudentDetail />
<StudentDetailDeleteModal />
</div>
</Route>
<ToastContainer />
<Redirect to="/students"/>
</>
</Switch>
) : (
<Switch>
<>
<div className="App">
<Route path="/login">
<>
<Login key="login" />
</>
</Route>
<ToastContainer />
<Redirect to="/login" />
</div>
</>
</Switch>
)}
</BrowserRouter>
<PopUp isPopUp={isPopUp} setIsPopUp={setIsPopUp} setCookie={setCookie} />
</div>
) import "./ControlBar.css";
import React, { useContext } from "react";
import { StudentContext } from "../ContextSet";
import { useLocation } from "react-router";
const ControlBar = () => {
const location = useLocation();
const query = new URLSearchParams(location.search);
return (
<form className="controlbar" >
<input
name='name'
type="search"
className="controlbarinput"
placeholder="이름"
/>
<input
name='grade'
type="search"
className="controlbarinput"
placeholder="학년"
/>
<button type='submit'>검색</button>
</form>
);
};
export default ControlBar; 위 코드는 App.js에서 Router를 관리하는 return 부분이고 아래 코드는 검색 기능이 있는 ControlBar 컴포넌트의 코드 전문입니다. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 7 replies
-
https://v5.reactrouter.com/web/api/Switch 공식문서에 따르면 Switch 는 직계 child 중 첫 번째로 생성 가능한 친구만 살리고 나머지는 띄우지 않는 친구입니다. 1 <Switch>
2 <>
3 <Route />
...
29 </>
30 </Switch> 즉 Switch의 직계 child 중 첫 번째 녀석인 2~29번 줄이 모두 살게 됩니다. 즉 그 Switch는 아무 효과를 내지 못합니다. <Route path="/students" >
<div className="App" key="students">
...어쩌구
</div>
</Route>
<Route path="/student/:id">
<div className="App" key="student/id">
...저쩌구
</div>
</Route>
<ToastContainer />
<Redirect to="/students"/> 즉 리액트가 이중 마지막에 있는
그래서 무조건 |
Beta Was this translation helpful? Give feedback.
https://v5.reactrouter.com/web/api/Switch
공식문서에 따르면 Switch 는 직계 child 중 첫 번째로 생성 가능한 친구만 살리고 나머지는 띄우지 않는 친구입니다.
올려주신 코드의 첫 번째 파트를 보면 아래와 같은 형식입니다. (줄번호는 그냥 설명 편의상 달았습니다)
즉 Switch의 직계 child 중 첫 번째 녀석인 2~29번 줄이 모두 살게 됩니다. 즉 그 Switch는 아무 효과를 내지 못합니다.
아무튼, 그 효과로 인해 해당 코드는
Switch
없이 아래를 리턴한 것과 같은 효과를 냅니다.