Unexpected "duplicate presence of slot"
See original GitHub issueVersion
2.5.2
Reproduction link
https://codesandbox.io/s/mzvkppmvo8
Steps to reproduce
- I created component with scoped slot (AppSwitcher.vue)
- Then I use it in another component with their own slot (HelloWorld.vue with slot “subtext”)
- Add some element to slot (div in App.vue)
What is expected?
It should work without errors
What is actually happening?
Changes in AppSwitcher.vue caus “Duplicate presence of slot “subtext” found in the same render tree” error but there are no duplicates.
Also, adding slot-scope
to div in App.vue solves problem and no error there, but why it happens without slot-scope
?
Issue Analytics
- State:
- Created 5 years ago
- Reactions:5
- Comments:9 (1 by maintainers)
Top Results From Across the Web
how to resolve - Duplicate presence of slot "default" found in ...
I am getting the below error when using <slot> multiple times: Duplicate presence of slot "default" found in the same render tree -...
Read more >Developers - Unexpected "duplicate presence of slot" - - Bountysource
Changes in AppSwitcher.vue caus "Duplicate presence of slot "subtext" found in the same render tree" error but there are no duplicates.
Read more >Duplicate presence of slot - Get Help - Vue Forum
As a result, I'm getting the dreaded duplicate presence of slot... error. One of the solutions I tried to come up with is...
Read more >Fixes or workarounds for recent issues in Outlook for PC
Outlook Known issues in December 2022 updates. [FIXED] Users may notice that the incorrect timeslot is selected after clicking a meeting in the...
Read more >SMAPI Error Codes | Alexa Skills Kit - Amazon Developer
SMAPI returns a CONFLICTING_INSTANCES error code when the presence or value of one ... skill manifest contains duplicate url values in the feeds...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I’m experiencing the same thing. Anything that triggers a re-render inside the slot-scope causes a warning about duplicate slot presence.
The issue seems to be here on this line here. Once the slots have been rendered once, subsequent executions of that block have
slotNodes._rendered
as true, presumably from the first render.I would imagine something should be setting that back to false when a re-render is triggered, but admittedly I know almost nothing about how Vue works under the hood so that’s just a wild guess.
This bug seems like an unlikely edge case but it’s happened to me a couple of times recently. I’m a big fan of the pattern of writing renderless components that can be paired with concrete implementations, and trying to pass the content from the consumer into the concrete implementation is when this issue is arising.
Note that if you’re using Vue.js ≤v2.4.x, then you may see this error if you are trying to use
slot-scope
(that’s what was going on for me).The solution is to either update Vue.js to ≥2.5 OR use “scope” instead of “slot-scope”:
Hope that helps anyone else finding this on google like I did!
PS. If you’re using Vue.js ≤v2.4.x, remember that you’ll need to use a
<template>
element – you can’t just put a slot scope boundary on any miscellaneous element until ≥2.5.x. A little real-world example: