DEV Community

RSM Academy BD
RSM Academy BD

Posted on

Install React Router Dom With Tailwind CSS

Image description

Promo:

IPromo Video

Install Tailwind CSS with Create React App

1. Create your project

  • Start by creating a new React project with Create React App v5.0+ if you don't have one already set up.

Open Terminal

 npx create-react-app my-project cd my-project 
Enter fullscreen mode Exit fullscreen mode

2. Install Tailwind CSS

  • Install tailwindcss via npm, and then run the init command to generate your tailwind.config.js file.
 npm install -D tailwindcss npx tailwindcss init 
Enter fullscreen mode Exit fullscreen mode

3. Configure your template paths

  • Add the paths to all of your template files in your tailwind.config.js file.
 /** @type {import('tailwindcss').Config} */ module.exports = { content: ["./src/**/*.{js,jsx,ts,tsx}"], theme: { extend: {}, }, plugins: [], }; 
Enter fullscreen mode Exit fullscreen mode

4. Add the Tailwind directives to your CSS

  • Add the @tailwind directives for each of Tailwind’s layers to your ./src/index.css file.
 @tailwind base; @tailwind components; @tailwind utilities; 
Enter fullscreen mode Exit fullscreen mode

5. Start your build process

  • Run your build process with npm run start.
 npm run start 
Enter fullscreen mode Exit fullscreen mode

6. Start using Tailwind in your project

  • Start using Tailwind’s utility classes to style your content.
 export default function App() { return <h1 className="text-3xl font-bold underline">Hello world!</h1>; } 
Enter fullscreen mode Exit fullscreen mode

7. Add React Router

  • To add React Router in your application, run this in the terminal from the root directory of the application:
 npm i -D react-router-dom@latest 
Enter fullscreen mode Exit fullscreen mode

8. Folder Structure

-To create an application with multiple page routes, let's first start with the file structure.

-Within the src folder, we'll create a folder named pages with several files:

src\pages:

  • NavBAr.jsx
  • Home.jsx
  • Blogs.jsx
  • Contact.jsx
  • NoPage.jsx etc [Your components/page name] Each file will contain a very basic React component.

9. Basic Usage

  • Now we will use our BrowserRouter in our index.js file.
 import React from "react"; import ReactDOM from "react-dom/client"; import "./index.css"; import App from "./App"; import reportWebVitals from "./reportWebVitals"; import { BrowserRouter } from "react-router-dom"; const root = ReactDOM.createRoot(document.getElementById("root")); root.render( <React.StrictMode> <BrowserRouter> <App /> </BrowserRouter>  </React.StrictMode> ); // If you want to start measuring performance in your app, pass a function // to log results (for example: reportWebVitals(console.log)) // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals reportWebVitals(); 
Enter fullscreen mode Exit fullscreen mode

We wrap our content first with .

 import { BrowserRouter } from "react-router-dom"; <BrowserRouter> <App /> </BrowserRouter>  
Enter fullscreen mode Exit fullscreen mode

10. Now we will use our Router in our app.js file.

 import { Route, Routes } from "react-router-dom"; import GovtJob from "./pages/GovtJob"; import PrivetJob from "./pages/PrivetJob"; import TeacherJob from "./pages/TeacherJob"; import ItJob from "./pages/ItJob"; import Home from "./components/Home"; import NavBar from "./components/NavBar"; import Contact from "./components/Contact"; import Blogs from "./components/Blogs"; import About from "./components/About"; function App() { return ( <div className="max-w-screen-lg mx-auto"> <NavBar /> <Routes> <Route path="/" element={<Home />} />  <Route path="/govtJob" element={<GovtJob />} />  <Route path="/privetJob" element={<PrivetJob />} />  <Route path="/teacherJob" element={<TeacherJob />} />  <Route path="/itJob" element={<ItJob />} />  {/* ============================================= */} <Route path="about" element={<About />} />  <Route path="contact" element={<Contact />} />  <Route path="blogs" element={<Blogs />} />  </Routes>  </div>  ); } export default App; 
Enter fullscreen mode Exit fullscreen mode

Example Explained

  • We define our . An application can have multiple . Our basic example only uses one.

  • s can be nested. The first has a path of / and renders the Layout component.

  • The nested s inherit and add to the parent route. So the blogs path is combined with the parent and becomes /blogs.

  • The Home component route does not have a path but has an index attribute. That specifies this route as the default route for the parent route, which is /.

  • Setting the path to * will act as a catch-all for any undefined URLs. This is great for a 404 error page.

Pages / Components

  • The NavBar component has and elements.

  • The renders the current route selected.

  • is used to set the URL and keep track of browsing history.

  • Anytime we link to an internal path, we will use instead of .

  • The "NavBar route" is a shared component that inserts common content on all pages, such as a navigation menu.

 import React from "react"; import { Outlet, Link } from "react-router-dom"; const NavBar = () => { return ( <div> <ul className="flex justify-center items-center gap-10 text-2xl pb-10"> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/contact">Contact</Link> </li> <li> <Link to="/blogs">Blogs</Link> </li> </ul> <Outlet /> </div> ); }; export default NavBar; 
Enter fullscreen mode Exit fullscreen mode

Make other page/components

Nested Routher

  • Home Page
 import React from "react"; import { Link } from "react-router-dom"; const Home = () => { return ( <div> <h1 className="text-red-500 underline text-3xl text-center"> Home Page{" "} </h1> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quibusdam et voluptate rerum eaque adipisci soluta placeat ad temporibus, laborum recusandae quas! Possimus eaque mollitia enim iste neque placeat omnis veritatis. </p> <ul className="flex justify-center items-center gap-10 text-2xl pb-10 text-green-500"> <li> <Link to="/govtJob">Govt Job</Link> </li> <li> <Link to="/privetJob">Privet Job</Link> </li> <li> <Link to="/teacherjob">Teacher Job</Link> </li> <li> <Link to="/itJob">IT Job</Link> </li> </ul> 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)