-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Version
4.1.6
Reproduction link
Steps to reproduce
- Open linked CodeSandbox
- Observe Console
- Click on "Home - A", and then on "Home - B"
What is expected?
Should not log at all, because the component has receives no props and does not depend on any reactive data from the router.
So when a child route changes, it should not update.
What is actually happening?
Home.vue console.logs 3 times, meaning it re-rendered multiple times.
I'm pretty sure the reason for that is that router-view
needs to re-render multiple times, and each time, a new onVNodeUnmounted
callback is added to the VieComponent vnode's props object here:
router/packages/router/src/RouterView.ts
Lines 160 to 170 in e008551
const onVnodeUnmounted: VNodeProps['onVnodeUnmounted'] = vnode => { | |
// remove the instance reference to prevent leak | |
if (vnode.component!.isUnmounted) { | |
matchedRoute.instances[currentName] = null | |
} | |
} | |
const component = h( | |
ViewComponent, | |
assign({}, routeProps, attrs, { | |
onVnodeUnmounted, |
So from the POV of Vue, the props changed. So it will run an update cycle of the router view.
nicolas-t and panstromek
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Type
Projects
Status
📆 Planned