React Router
React 에서 사용하는 Router
Categories
- ReactRouterDom:Navigate
Adding a Router
First thing to do is create a Browser Router and configure our first route. This will enable client side routing for our web app.
The main.jsx file is the entry point. Open it up and we'll put React Router on the page.
👉 Create and render a browser router in main.jsx
import React from "react";
import ReactDOM from "react-dom/client";
import {
createBrowserRouter,
RouterProvider,
Route,
} from "react-router-dom";
import "./index.css";
const router = createBrowserRouter([
{
path: "/",
element: <div>Hello world!</div>,
},
]);
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
);
중첩 라우팅
- javascript - How to template jsx with createBrowserRouter - Stack Overflow
- (React) React-Router-Dom V6 업그레이드
중첩 라우터에서 Outlet
을 사용하면 된다.
Redirect
Navigate에 replace
속성을 사용하면 된다.
import {Navigate, createBrowserRouter} from 'react-router-dom';
import App from '../App';
import Dashboard from '../pages/Dashboard';
export const router = createBrowserRouter([
{
path: '/',
element: <App />,
children: [
{
index: true,
element: <Navigate to="/dashboard" replace />,
},
{
path: '/dashboard',
element: <Dashboard />,
},
// ...
],
},
]);
UnitTest
- Testing useNavigate() / navigate() from react-router v6 – Paweł Gościcki
- Testing the React Router useNavigate Hook with react-testing-library - LogRocket Blog
import * as router from 'react-router'
const navigate = jest.fn()
beforeEach(() => {
jest.spyOn(router, 'useNavigate').mockImplementation(() => navigate)
})
it('...', () => {
expect(navigate).toHaveBeenCalledWith('/path')
})