feat(compiler-vapor): support v-slots expression for jsx-vapor (#271)

Co-authored-by: 三咲智子 Kevin Deng <sxzz@sxzz.moe>
This commit is contained in:
zhiyuanzmj 2024-09-17 11:45:20 +08:00 committed by GitHub
parent 1094b05259
commit ced7ee684c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 2 deletions

View File

@ -163,7 +163,9 @@ function genRawSlots(slots: IRSlots[], context: CodegenContext) {
...slots.map(slot =>
slot.slotType === IRSlotType.STATIC
? genStaticSlots(slot, context)
: genDynamicSlot(slot, context, true),
: slot.slotType === IRSlotType.EXPRESSION
? slot.slots.content
: genDynamicSlot(slot, context, true),
),
)
}

View File

@ -36,6 +36,7 @@ export enum IRSlotType {
DYNAMIC,
LOOP,
CONDITIONAL,
EXPRESSION, // JSX only
}
export type IRSlotsStatic = {
slotType: IRSlotType.STATIC
@ -58,9 +59,13 @@ export interface IRSlotDynamicConditional {
positive: IRSlotDynamicBasic
negative?: IRSlotDynamicBasic | IRSlotDynamicConditional
}
export interface IRSlotsExpression {
slotType: IRSlotType.EXPRESSION
slots: SimpleExpressionNode
}
export type IRSlotDynamic =
| IRSlotDynamicBasic
| IRSlotDynamicLoop
| IRSlotDynamicConditional
export type IRSlots = IRSlotsStatic | IRSlotDynamic
export type IRSlots = IRSlotsStatic | IRSlotDynamic | IRSlotsExpression