Skip to content
This repository has been archived by the owner on Mar 26, 2022. It is now read-only.

tylim88/react-router-link-nostack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

79 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

react-router-link-nostack

npm GitHub PRs Welcome tylim88

๐ŸŽˆ Prevent stacking in browser history upon re-navigating current route with custom React Router Link Component.

๐ŸŒŸ almost 0 learning curve.

๐Ÿ”” 0 dependency.

โ›ฒ๏ธ Out of box typescript support.

๐Ÿฆบ Tested.

Note: You need React Router v5.1 or above to use this!

Installation

npm i react-router-link-nostack

Demo

View it at GhPage!

Try it at Code Sandbox!

Usage

simply use it just like you use React Router Link

import React from 'react'
import { render } from 'react-dom'
import Link from 'react-router-link-nostack'
import { BrowserRouter, Route, Switch } from 'react-router-dom'
import { Helmet } from 'react-helmet'

const Demo = () => {
	return (
		<BrowserRouter basename={'/'}>
			<div>
				<h1>react-router-link-nostack Demo</h1>
				<Link to='/'>to index</Link>
				<br />
				<Link to='/profile'>to profile</Link>
			</div>
			<br />
			<Switch>
				<Route
					exact
					path='/'
					render={() => {
						return (
							<>
								<Helmet>
									<title>Index</title>
								</Helmet>
								<p>Now at Index Page(route: '/')</p>
							</>
						)
					}}
				/>
				<Route
					exact
					path='/profile'
					render={() => {
						return (
							<>
								<Helmet>
									<title>Profile</title>
								</Helmet>
								<p>Now at Profile Page(route: '/profile')</p>
							</>
						)
					}}
				/>
			</Switch>
			<p>
				try to click the same route multiple time and see it wont add to history
				stack!
			</p>
		</BrowserRouter>
	)
}

render(<Demo />, document.getElementById('root'))

API

This Link works like and has the same properties as React Router's Link, plus:

  1. onSamePage(event): callback that trigger when user revisit the same page, can be undefined or null, accept event object.
<Link
	to='/profile'
	onSamePage={() => {
		console.log('same page and wont stack history!')
	}}
>
	to profile
</Link>

About

๐ŸŽˆ <Link/> that prevent stacking in browser history upon re-navigating current route

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published