提交 09fb6033 编写于 作者: fxy060608's avatar fxy060608

fix(mp): mini program component with default slot

上级 12035426
......@@ -115,8 +115,8 @@ describe('compiler: transform component', () => {
},
})
assert(
`<van-button/>`,
`<van-button u-t="m" u-i="dc555fe4-0" bind:__l="__l"/>`,
`<van-button><template #default><view/></template><template #head><view/></template></van-button>`,
`<van-button u-t="m" u-i="dc555fe4-0" bind:__l="__l"><view/><view slot="head"/></van-button>`,
`(_ctx, _cache) => {
return {}
}`,
......
......@@ -60,7 +60,7 @@ addMiniProgramPageJson(filename, {
},
})
assert(
`<van-button/>`,
`<van-button><template #default><view/></template></van-button>`,
`<van-button u-i="dc555fe4-0"/>`,
`(_ctx, _cache) => {
return {}
......
......@@ -51,11 +51,12 @@ export const transformSlot: NodeTransform = (node, context) => {
if (!isUserComponent(node, context as any)) {
return
}
const { children } = node
const { tag, children } = node
const slots = new Set<string | ExpressionNode>()
const onComponentSlot = findDir(node, 'slot', true)
const implicitDefaultChildren: TemplateChildNode[] = []
const isMiniProgramComponent = context.isMiniProgramComponent(tag)
for (let i = 0; i < children.length; i++) {
const slotElement = children[i]
let slotDir: DirectiveNode | undefined
......@@ -83,6 +84,15 @@ export const transformSlot: NodeTransform = (node, context) => {
node,
context
)
// 小程序组件默认插槽,直接移除<template #default>节点
if (isMiniProgramComponent) {
if (slotName === 'default' && slotElement.children.length === 1) {
children.splice(i, 1, slotElement.children[0])
}
continue
}
if (slotName) {
slots.add(slotName)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册