Dependency injection

When using lifecycle methods (canActivate, canDeactivate), middleware or plugins, you might need to access specific objects from your application: a store, a specific API, etc... You can pass their reference to router5 and they will be passed alongside your router instance.
For TypeScript users, createRouter accepts a generic for typing dependencies.
You can register all dependencies at once, or one by one.
const router = createRouter(routes, options, dependencies)
router.setDependencies({ store, api })
// or
router.setDependency('store', store)
router.setDependency('api', api)
You can retrieve your current dependencies references using getDependencies().
Lifecycle methods (canActivate, canDeactivate), middleware or plugins will be called with them:
const plugin = (router, dependencies) => ({
onStart() {},
onStop() {},
onTransitionStart() {},
const canActivate = (router, dependencies) =>
(toState, fromState, done) {
/* ... */
const middleware = (router, dependencies) =>
(toState, fromState, done) {
/* ... */