This is a React High Order Component(HOC) that you can use to handle the route changed events when you use react-router.
Use npm
npm install react-onroutechanged
Use yarn
yarn add react-onroutechanged
import React from 'react'
import onRouteChangedHOC from 'react-onroutechanged'
class MyComponent extends React.Component {
handleRouteChanged = (prevLocation, nextLocation) => {
// ...do your stuff with location information here
}
}
const onRoutedChangedConfig = {
mounted: true,
onlyPathname: false
}
export default onRouteChangedHOC(MyComponent, onRoutedChangedConfig)
import React, { useState } from 'react'
import onRouteChangedHOC from 'react-onroutechanged'
const MyComponent = () => {
const [location, setLocation] = useState()
MyComponent.handleRouteChanged = (prevLocation, nextLocation) => {
// ...do your stuff with location information here
setLocation(nextLocation)
}
}
const onRoutedChangedConfig = {
mounted: true,
onlyPathname: false
}
export default onRouteChangedHOC(MyComponent, onRoutedChangedConfig)
The location
object has the following attributes:
location.pathname
- The path of the URLlocation.search
- The URL query stringlocation.hash
- The URL hash fragment
Notes: This library is built on top of react-router withRouter HOC and the location object passed to handledRouteChanged
method is the exact same one provided by withRouter
HOC, so you can look at its documentation for more information on the location
object.
onRouteChangedHOC
receives an optional configuration object as the second parameter. Allowed values for the configuration are as follows:
Name | Type | Default | Description |
---|---|---|---|
mounted |
boolean |
false |
If true , the handleRouteChanged method of the wrappedComponent will be called with (null, currentLocation) when the component is mounted. |
onlyPathname |
boolean |
true |
If true , the handleRouteChanged method will only be called when the pathname of the location has been changed. If false , the changes of search or hash of the location will also trigger the handleRouteChanged method. |