Vue-router: ability to check push vs replace in navigation guard

Created on 19 Jul 2017  ·  3Comments  ·  Source: vuejs/vue-router

What problem does this feature solve?

I am trying to create a single page mobile app with a push/pop/modal navigation. This navigation behavior is similar to the iOS SDK's navigation controller behavior.
To get this to work in my code I have added a new field(navigationType: push | pop | modal) in the params object. Then in router.afterEach I check for this new field.

It would be nice to have this be part of the vue router api. Considering the push/replace is already separate API.

What does the proposed API look like?

usage might be:
router.afterEach((to, from) => {
if(to.navigationType == 'push'){
} else if(to.navigationType == 'replace'){
}
}

feature request group[current route information] needs RFC

Most helpful comment

Features are also needed in beforeEach.

All 3 comments

Features are also needed in beforeEach.

As many +1's as I can give.
I need this in scrollBehavior

When you have a navigation guard that needs to stick on a part on the URL, no matter if it's a push or replace, this becomes very hard to do transparently.

If we follow @posva's suggestion, suddenly all locations that use a replace also need to pass on another navigation prop, to indicate that this was a replace to the navigation guards. This seems to be the only way for our navigation guard next(to) call to be a push or replace based on the initial navigation that triggered the guard.

Was this page helpful?
0 / 5 - 0 ratings