npm install react-router-dom
index.js파일
// BrowserRouter로 감싸기</br>
import { BrowserRouter } from "react-router-dom";
root.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
App.js에서 사용
//사용하는 컴포넌트 선언하기
import { Routes, Route } from "react-router-dom";
// Routes 태그 안에 원하는 페이지만큼 Route 태그를 만들어 스위치 작용한다.
<Routes>
// 2가지 필수속성 path(페이지 경로 정하기), elemnt(넣어 줄 컴포넌트)
<Route path="" elemnt={<A />} />
<Route path="" elemnt={<B />} />
</Routes>
import { Link } from "react-router-dom";
<Link to = "가고싶은 링크주소" />클릭</Link>
import { useNavigate } from "react-router-dom";
const Home = () => {
const navigate = useNavigate();
const goToMarket = () => {
navigate("가고싶은 링크주소")
};
return (
<div>
<h1>home</h1>
<button onClick={goToMarket}>go to a market</button>
</div>
);
};
url 설정
<Route path="/blogs/:id/:num" element={<itemDetailPage />} />
import { useParams } from "react-router-dom"
const params = useParams();
console.log("params",params)
// localhost:3000/blogs/abc/98
// 객체 형태로 반환 {id: 'abc', num:'98'}
distructuring 문법 사용
import { useParams } from "react-router-dom"
// key값으로 받아올 수 있음
const {id} = useParams();
console.log("id",id)
// localhost:3000/blogs/abc/98
// 객체 형태로 반환 {id: 'abc'}
import { useSearchParams } from "react-router-dom"
let [query,setQuery] = useSearchParams()
//localhost:3000/blogs/?q=cup&num=7
console.log(query.get('q')) // cup
console.log(query.get('num')) // 7
import { Navigate } from "react-router-dom"
function App() {
const [authenticate,setAthenricate] = useState(false)
const PrivateRoute = () => {
// 로그인이 안 된 상태에서 상세페이지에 접근하려는 경우 로그인페이지로 우회
return authenticate == true?<DetailPage/>:<Navigate to = "/login" />
}
}