router5 is extensible with the use of plugins. Plugins can decorate a route instance and do things on specific router and transition events.
A plugin is a function taking a router instance and returning an object with a name and at least one of the following methods:
onStart()
: invoked when router.start()
is called
onStop()
: invoked when router.stop()
is called
onTransitionStart(toState, fromState)
onTransitionCancel(toState, fromState)
onTransitionError(toState, fromState, err)
onTransitionSuccess(toState, fromState, opts)
(options contains replace
and reload
boolean flags)
teardown()
: a function called when removing the plugin
function myPlugin(router, dependencies) {return {onTransitionSuccess: (toState, fromState) => {console.log('Yippee, navigation to ' + toState.name + ' was successful!')}}}​const router = createRouter()​router.usePlugin(myPlugin)
​Browser plugin​
​Persistent params plugin​
​Logger​
Router5 includes a logging plugin that you can use to help development
import createRouter, { loggerPlugin } from 'router5'​const router = createRouter()​const teardownPlgin = router.usePlugin(loggerPlugin)