https://reactrouter.com/en/main
npm install react-router-dom
설치 후 package.json에 "react-router-dom": "^6.24.1" 추가됨
App.js 수정
import logo from './logo.svg';
import './App.css';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
const router = createBrowserRouter([
{
path: "/",
element: <div>안뇽 !!!!!!!!</div> <== JSX
},
{
path: "/xxx",
element: <div>xxx 안뇽 !!!!!!!!</div>
},
]);
function App() {
return (
<RouterProvider router={router}/>
);
}
export default App;
Home.js 작성
/로 요청시 < Home /> 랜더링
Products.js 작성
/products로 요청시 < Products /> 랜더링
App.js 수정
const router = createBrowserRouter ([
{
path:"/",
element: <Home />
},
{
path:"/products",
element: <Products />
},
]);
https://reactrouter.com/en/main/start/tutorial#nested-routes
https://reactrouter.com/en/main/start/tutorial#handling-not-found-errors
import { Link, useNavigate} from 'react-router-dom';
function Home(){
const navigate = useNavigate();
function handleEvent(){
navigate("/products");
}
<button onClick={handleEvent}>products로 가기(프로그래밍)</button>
1- path variable
: url에 포함되어 파라미터 전달
예> /users/2
{ path : "/users/:id" } // 콜론 사용함 ! (스프링부트에서는 중괄호)
useParams() 이용해서 id값 얻어옴
2- queryString 방식
: url에 포함되지 않고 ?key=value 형식으로 넘겨줌
예> /users?id=2
{ path : "/users" }
useSearchParams() 이용해서 id값 얻어옴
path:"/"
component: <RootLayout />
id:'root',
loader:~
childrend:[
{
path:"/users",
component:<Users/>
loader:~
==> 부모의 loader를 얻기위해서는 id 이용 + const user = useRouteLoaderData("root");
참고 ) 2024 리액트 추천 외부 라이브러리 목록
https://ykss.netlify.app/translation/react_libraries_for_2024/