Skip to content

Commit 100a296

Browse files
committed
move slot cloning back to render function so that it works for jsx as well
1 parent 84dfc1d commit 100a296

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

src/core/instance/render.js

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ export function renderMixin (Vue: Class<Component>) {
3636
_parentVnode
3737
} = vm.$options
3838

39+
if (vm._isMounted) {
40+
// clone slot nodes on re-renders
41+
for (const key in vm.$slots) {
42+
vm.$slots[key] = cloneVNodes(vm.$slots[key])
43+
}
44+
}
45+
3946
if (staticRenderFns && !vm._staticTrees) {
4047
vm._staticTrees = []
4148
}
@@ -154,20 +161,14 @@ export function renderMixin (Vue: Class<Component>) {
154161
fallback: ?Array<VNode>
155162
): ?Array<VNode> {
156163
let slotNodes = this.$slots[name]
157-
if (slotNodes) {
158-
// warn duplicate slot usage
159-
if (process.env.NODE_ENV !== 'production') {
160-
slotNodes._rendered && warn(
161-
`Duplicate presense of slot "${name}" found in the same render tree ` +
162-
`- this will likely cause render errors.`,
163-
this
164-
)
165-
slotNodes._rendered = true
166-
}
167-
// clone slot nodes on re-renders
168-
if (this._isMounted) {
169-
slotNodes = cloneVNodes(slotNodes)
170-
}
164+
// warn duplicate slot usage
165+
if (slotNodes && process.env.NODE_ENV !== 'production') {
166+
slotNodes._rendered && warn(
167+
`Duplicate presense of slot "${name}" found in the same render tree ` +
168+
`- this will likely cause render errors.`,
169+
this
170+
)
171+
slotNodes._rendered = true
171172
}
172173
return slotNodes || fallback
173174
}

0 commit comments

Comments
 (0)