Subscribe on changes!

Using the comment node in the slot, no mounts occur on the dom

avatar
Mar 7th 2023

Vue version

3.2.47

Link to minimal reproduction

https://sfc.vuejs.org/#eNp9UstOwzAQ/BXjS4tU2yogIVWmKo8rJ66+hGZLA/FDthOEovw76zwgDY9c4p2Z9aw9buitc7yugG6oDHtfuEgCxMptlSm0sz6Sx497iysDJpKDt5osuJhgqXmhjBR9N/ZhEUG7MouQqignagQIIYidMUZkXtQ9gN96ve6XUiSYMNZRcuqFiBRfe9MV7UdkOnP8NViDh2hSkxqIoOiGdEjCcNBUK3qM0YWNEJVxby98b7XYISd8ZWKhgeVW7y75Bb+6xklCnOIcgmbP3r4H8Oio6GqyuUCwBs88mBw8+H/NZtoTwxn3wzR5tsq0eAGzIH5JkQwxNlWAp9LG0A4p9rntrQkoRoLckFGyPB+JY1bDAxyyqkz8nbUlZGaZ5DzvYZT+mT3G9x2xTF1b1KZf9y66oGeqpplYtnjK8UGcRt9+Aj568No=

Steps to reproduce

1、Create a default slot 2、Comment out the content inserted in the default slot

I set that option in the development environment, but it still behaves the same way

image

What is expected?

Note content appears on dom

What is actually happening?

Note content disappears and is not mounted

System Info

No response

Any additional comments?

link #7699

My original intent was to determine if the default slot was passed in, but I found that after commenting out the node, Boolean(useSlots().defult) was still true. in the compiled content I see that the comment vnode is actually created, and if Boolean(useSlots(). defult) behaves correctly, should I mount the comment vnode here as well?

avatar
Mar 7th 2023

fe40053dc9ac651ced88a93145add13

avatar
Mar 7th 2023

slot.default is a function ,so Boolean(slot.default) always be true

interface ComponentPublicInstance { $slots: { [name: string]: Slot } }

type Slot = (...args: any[]) => VNode[]

avatar
Mar 7th 2023

@asuishi But not always a function. However, what is confusing here is that since Boolean(useSlots(). defult is true (annotated nodes are created), why dom is not mounted. I think there is a performance inconsistency here Contrast Example

avatar
Apr 5th 2023

@asuishi 但并不总是一个功能。然而,这里令人困惑的是,既然Boolean(useSlots(). defult是真的(创建了注释节点),为什么没有挂载dom。我认为这里存在性能不一致 对比示例

image