Routing and navigation are inevitable in most software applications
The way you would handle routing and navigation in React JS is somewhat different from the way you would, let’s say, in traditional HTML.
In this tutorial we shall see how to work with React Router in React JS
So let’s get straight to the point, shall we.
npx create-react-app yourFolderName
yarn add react-router-dom
or
npm install react-router-dom
yarn start
Let’s just design a simple nabber for our application. In your App.js (any other convenient file of your choice) add the following:
<ul className="nav-link-style">
<li>Home</li>
<li>About</li>
<li>Contact</li>
<li>Services</li>
</ul>
Let’s add a bit of styling our App.css
.nav-link-style {
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-items: center;
list-style: none;
}
We will create a separate file and call it RouteFile (or whatever you decide to call yours, but it must not be Route or Router). This will handle our React Router We will add the following code to our RouteFile.js
import React from 'react';
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom';
import App from '../App';
function RouteFile(){
return(
<Router>
<Switch>
<Route exact path="/" component={App} />
</Switch>
</Router>
)
}
export default RouteFile;
So, here’s our routing file and we only have one Route (or navigation) here. Notice we have the word “exact” and for path we have the “/” and our component App.js. This means the App.js file is our landing page. When anyone visits our our website for the first time, they will land on the App.js file.
This is similar to our default index file in html.
What we want to do next is to create file components for other screens and link them accordingly.
import React from 'react';
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom';
import About from '../About';
import App from '../App';
import Contact from '../Contact';
import Services from '../Services';
function RouteFile(){
return(
<Router>
<Switch>
<Route exact path="/" component={App} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
<Route path="/services" component={Services} />
</Switch>
</Router>
)
}
export default RouteFile;
One advantage of Routing in React JS is that we able to customise our url to something short, simple and unique.
So, here’s the full code for our App.js file
import React, { Component } from "react";
import "./App.css";
import { Link } from "react-router-dom";
class App extends Component {
render() {
return (
<div>
<ul className="nav-link-style">
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/contact">Contact</Link></li>
<li><Link to="/services">Services</Link></li>
</ul>
</div>
);
}
}
export default App;
Finally, to make our Routing take effect, we need to set our RouteFile.js as the default starting component in our index.js file. Usually, the default component is App.js. But will replace that as follows:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import RouteFile from './Routes/RouteFile';
ReactDOM.render(
<React.StrictMode>
<RouteFile />
</React.StrictMode>,
document.getElementById('root')
);
// 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();
You have successfully added React Router to your React application.
Mobile app template for mobile app developers
Introduction The Observer Pattern is a design pattern used to manage and notify multiple objects…
Memory management is like housekeeping for your program—it ensures that your application runs smoothly without…
JavaScript has been a developer’s best friend for years, powering everything from simple websites to…
In the digital age, web development plays a crucial role in shaping how individuals interact…
Introduction Handling large amounts of data efficiently can be a challenge for developers, especially when…