React Router
lastmod 2023-02-13created 2022-11-049 edits
Router used in React
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>
);
Nested routing
- javascript - How to template jsx with createBrowserRouter - Stack Overflow
- (React) Upgrading to React-Router-Dom V6
Use Outlet in the nested router.
Redirect
Use the replace property on Navigate.
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')
})