ComponentInternalInstance,
DirectiveBinding,
Fragment,
+ FunctionalComponent,
mergeProps,
ssrUtils,
Static,
const comp = instance.type as Component
const { getBuffer, push } = createBuffer()
if (isFunction(comp)) {
- renderVNode(
- push,
- (instance.subTree = renderComponentRoot(instance)),
- instance,
- slotScopeId
- )
+ let root = renderComponentRoot(instance)
+ // #5817 scope ID attrs not falling through if functional component doesn't
+ // have props
+ if (!(comp as FunctionalComponent).props) {
+ for (const key in instance.attrs) {
+ if (key.startsWith(`data-v-`)) {
+ ;(root.props || (root.props = {}))[key] = ``
+ }
+ }
+ }
+ renderVNode(push, (instance.subTree = root), instance, slotScopeId)
} else {
if (
(!instance.render || instance.render === NOOP) &&