fix: inherit el for static nodes inside keyed template fragment (#2089)
fix #2080
This commit is contained in:
@@ -10,9 +10,13 @@ import {
|
||||
dumpOps,
|
||||
NodeOpTypes,
|
||||
serializeInner,
|
||||
createTextVNode
|
||||
createTextVNode,
|
||||
createBlock,
|
||||
openBlock,
|
||||
createCommentVNode
|
||||
} from '@vue/runtime-test'
|
||||
import { PatchFlags } from '@vue/shared'
|
||||
import { renderList } from '../src/helpers/renderList'
|
||||
|
||||
describe('renderer: fragment', () => {
|
||||
it('should allow returning multiple component root nodes', () => {
|
||||
@@ -269,4 +273,46 @@ describe('renderer: fragment', () => {
|
||||
render(null, root)
|
||||
expect(serializeInner(root)).toBe(``)
|
||||
})
|
||||
|
||||
// #2080
|
||||
test('`template` keyed fragment w/ comment + hoisted node', () => {
|
||||
const root = nodeOps.createElement('div')
|
||||
const hoisted = h('span')
|
||||
|
||||
const renderFn = (items: string[]) => {
|
||||
return (
|
||||
openBlock(true),
|
||||
createBlock(
|
||||
Fragment,
|
||||
null,
|
||||
renderList(items, item => {
|
||||
return (
|
||||
openBlock(),
|
||||
createBlock(
|
||||
Fragment,
|
||||
{ key: item },
|
||||
[
|
||||
createCommentVNode('comment'),
|
||||
hoisted,
|
||||
createVNode('div', null, item, PatchFlags.TEXT)
|
||||
],
|
||||
PatchFlags.STABLE_FRAGMENT
|
||||
)
|
||||
)
|
||||
}),
|
||||
PatchFlags.KEYED_FRAGMENT
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
render(renderFn(['one', 'two']), root)
|
||||
expect(serializeInner(root)).toBe(
|
||||
`<!--comment--><span></span><div>one</div><!--comment--><span></span><div>two</div>`
|
||||
)
|
||||
|
||||
render(renderFn(['two', 'one']), root)
|
||||
expect(serializeInner(root)).toBe(
|
||||
`<!--comment--><span></span><div>two</div><!--comment--><span></span><div>one</div>`
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user