Skip to content

Introduce passive option for router.push/router.replace #2232

Closed as not planned
@AlttiRi

Description

@AlttiRi

What problem is this solving

I want to update the location URL without triggering scrollBehavior.

I need to trigger scrollBehavior only on the page refresh, or when I go to the route from other one to scroll the page to the selected item. (I select an item by a click on it then I add its ID to the location URL).

Proposed solution

Add a passive option for router.push/router.replace to skip scrollBehavior and guards, for example, if there is no transition to another route.

router.replace({ params: { id: item.name }, passive: true });

As you can see in this example, I do not use neither name, or path. I'm still on the same route ("/items/:id?") after using replace. Using of hash (/items#1), or searchParams(/items?id=1) for storing a data on the same route have this issue too.


Or add any way to attach a meta object (for example, {passive: true, foo: "bar"}) to check it in scrollBehavior and guard functions.
A simple if (to.state.passive) { return; } in scrollBehavior will be acceptable option too.

Describe alternatives you've considered

Yeah, I can write a workaround, but I (and not only me) would like to see this simple and expected option from the box.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions