React-router: Difference between revisions
Jump to navigation
Jump to search
Line 20: | Line 20: | ||
); | ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Add Routes to App.js== | |||
We need to a routes to the the router we support. | |||
<syntaxhighlight lang="js"> | |||
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; | |||
import Explore from './components/Explore'; | |||
import Home from './components/Home'; | |||
import Messages from './components/Messages'; | |||
import Profile from './components/Profile'; | |||
function App() { | |||
return ( | |||
<Router> | |||
<div> | |||
<h2>Welcome to React Router Tutorial</h2> | |||
<nav className="navbar navbar-expand-lg navbar-light bg-light"> | |||
<ul className="navbar-nav mr-auto"> | |||
<li><Link to={'/'} className="nav-link"> Home </Link></li> | |||
<li><Link to={'/explore'} className="nav-link">Explore</Link></li> | |||
<li><Link to={'/messages'} className="nav-link">Messages</Link></li> | |||
<li><Link to={'/profile'} className="nav-link">Profile</Link></li> | |||
</ul> | |||
</nav> | |||
<hr /> | |||
<Switch> | |||
<Route exact path='/' component={Home} /> | |||
<Route path='/explore' component={Explore} /> | |||
<Route path='/messages' component={Messages} /> | |||
<Route path='/profile' component={Profile} /> | |||
</Switch> | |||
</div> | |||
</Router> | |||
); | |||
} | |||
export default App; | |||
</syntaxhighlight> | |||
==Create Page== | ==Create Page== | ||
Create a component for each page | Create a component for each page |
Revision as of 23:48, 24 June 2021
Introduction
This page is about routering with React.
Setup
Install package for Router
npm i react-router-dom
Add BrowserRouter to Index.js
...
import { BrowserRouter } from 'react-router-dom';
...
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
);
Add Routes to App.js
We need to a routes to the the router we support.
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';
import Explore from './components/Explore';
import Home from './components/Home';
import Messages from './components/Messages';
import Profile from './components/Profile';
function App() {
return (
<Router>
<div>
<h2>Welcome to React Router Tutorial</h2>
<nav className="navbar navbar-expand-lg navbar-light bg-light">
<ul className="navbar-nav mr-auto">
<li><Link to={'/'} className="nav-link"> Home </Link></li>
<li><Link to={'/explore'} className="nav-link">Explore</Link></li>
<li><Link to={'/messages'} className="nav-link">Messages</Link></li>
<li><Link to={'/profile'} className="nav-link">Profile</Link></li>
</ul>
</nav>
<hr />
<Switch>
<Route exact path='/' component={Home} />
<Route path='/explore' component={Explore} />
<Route path='/messages' component={Messages} />
<Route path='/profile' component={Profile} />
</Switch>
</div>
</Router>
);
}
export default App;
Create Page
Create a component for each page
import React, { Component } from 'react';
class Profile extends Component {
render() {
return (
<div>
<h2>Profile</h2>
</div>
);
}
}
export default Profile;
Transitions
You need to provide a class prefix in this case trans.
import {TransitionGroup, CSSTransition} from 'react-transition-group'
<TransactionGroup>
<CSSTransition key={location.key} classNames={'trans'} timeout={1000}>
<Switch location={location}>
<Route path={`${match.url}`} component={LoremNumber} exact/>
<Route path={`${match.url}/:id`} component={LoremNumber} exact/>
</Switch>
</TransactionGroup>
And the CSS
.trans-enter {
opacity: 0;
z-index: 1;
}
.trans-exit {
display: none
}
.trans-enter.trans-enter-active {
opacity: 1;
transition: opacity 1000ms ease-in;
}