fix: inherit el for static nodes inside keyed template fragment (#2089)

fix #2080
This commit is contained in:
underfin
2020-09-15 04:02:29 +08:00
committed by GitHub
parent 612eb6712a
commit a32870a8f6
2 changed files with 60 additions and 6 deletions

View File

@@ -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>`
)
})
})