RFC: unwrapFragment to flatten nested Fragment nodes #787
+80
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This RFC proposes introducing an internal utility function
unwrapFragment
in@vue/runtime-core
, which recursively flattensFragment
nodes from a VNode array. This solves a practical problem where multiple nestedFragment
layers—introduced by slot forwarding across components—make it difficult to inspect or reason about slot content.Example Use Case
This is especially useful in component libraries like TDesign, where internal logic depends on the slot node length or type—for example, to determine whether to show a "collapse/expand" toggle based on number of child nodes. In nested usage, the slots are wrapped in an extra
Fragment
, leading to incorrect logic.This utility simplifies advanced component use cases without altering Vue’s core slot behavior or introducing new user-facing API surface.
Links
Important: Do NOT comment on this PR. Please use the discussion thread linked above to provide feedback, as it provides branched discussions that are easier to follow. This also makes the edit history of the PR clearer.