Skip to content

Instantly share code, notes, and snippets.

@mhaecal
Last active February 20, 2022 04:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mhaecal/556ae06b14477ee994c09e296a375f40 to your computer and use it in GitHub Desktop.
Save mhaecal/556ae06b14477ee994c09e296a375f40 to your computer and use it in GitHub Desktop.
React Router 6
import React from 'react'
import { Outlet } from 'react-router-dom'
export default function App() {
return <Outlet />
}
import React from 'react'
function Home() {
return <div>This is homepage</div>
}
export default Home
import React from 'react'
import { Outlet } from 'react-router-dom'
import TheNavbar from '../TheNavbar'
function MainLayout() {
return (
<div>
<TheNavbar />
<Outlet />
</div>
)
}
export default MainLayout
import React from 'react'
import { useNavigate } from 'react-router-dom'
function Login() {
const navigate = useNavigate()
return (
<div>
<span>This login page use different layout</span>
<p>
<input type="text" placeholder="Username" />
</p>
<p>
<input type="password" placeholder="Password" />
</p>
<button onClick={() => navigate('/')}>Go to Home</button>
</div>
)
}
export default Login
import React from 'react'
import { NavLink } from 'react-router-dom'
export default function TheNavbar() {
function activeStyle(isActive: boolean) {
return isActive ? { color: 'red' } : {}
}
return (
<p>
<NavLink style={({ isActive }) => activeStyle(isActive)} to="/">
Home
</NavLink>
{` - `}
<NavLink style={({ isActive }) => activeStyle(isActive)} to="/product">
Product
</NavLink>
{` - `}
<NavLink to="/login">Login</NavLink>
</p>
)
}
import React from 'react'
import ReactDOM from 'react-dom'
import { BrowserRouter, Route, Routes } from 'react-router-dom'
import App from './App'
import MainLayout from './components/layouts/MainLayout'
import Home from './pages/Home'
import Login from './pages/Login'
import ProductList from './pages/ProductList'
import ProductItem from './pages/ProductItem'
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
{/*start routes*/}
<Routes>
<Route element={<MainLayout />}>
<Route path="/" element={<Home />} />
<Route path="/product" element={<ProductList />} />
<Route path="/product/:id" element={<ProductItem />} />
</Route>
<Route element={<App />}>
<Route path="/login" element={<Login />} />
</Route>
</Routes>
{/*end routes*/}
</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
)
import React from 'react'
import { useParams } from 'react-router-dom'
function ProductItem() {
const params = useParams()
return (
<div>
Product item <strong>{params.id}</strong>
</div>
)
}
export default ProductItem
import React from 'react'
import { Link } from 'react-router-dom'
function ProductList() {
return (
<div>
<p>This is product page</p>
<ul>
{[1, 2, 3].map((id, index) => (
<li key={index}>
<Link to={'/product/' + id}>Product {id}</Link>
</li>
))}
</ul>
</div>
)
}
export default ProductList
@mhaecal
Copy link
Author

mhaecal commented Feb 20, 2022

React Router 6 Example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment