Repository navigation
fix(runtime-vapor): support hasOwnProperty on props, attrs and slot props - #15841
Merged
edison1105 merged 2 commits intoOct 12, 2026
Merged
edison1105 merged 2 commits into
edison1105 merged 2 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the 鈿欙笍 Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
@vue/compiler-core
@vue/compiler-dom
@vue/compiler-sfc
@vue/compiler-ssr
@vue/compiler-vapor
@vue/reactivity
@vue/runtime-core
@vue/runtime-dom
@vue/runtime-vapor
@vue/server-renderer
@vue/shared
vue
@vue/compat
commit: |
Size ReportBundles
Usages
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
In a vapor component,
useAttrs().hasOwnProperty('id'),$attrs.hasOwnProperty(...)in the template andprops.hasOwnProperty(...)throwTypeError: ... is not a function, while in VDOMattrsandpropsare plain objects and the call works. The same happens to a VDOM component rendered by a vapor parent, since its attrs read through the vapor proxy. Real code relies on it, e.g. mixpost (playground).Component props/attrs and scoped-slot props now fall back to
Object.prototypewhen their own sources do not supply a value, while declared component props and explicit ownundefinedvalues retain precedence. Like #15835 did for slots, this restores prototype methods without adding inherited members to the own keys. The component props/attrsinbehavior and successful prop read path are unchanged. This also updates the assertion from #15708 that expectedattrs.toStringto beundefined.For Vapor slot content invoked by a VDOM child, the slot props proxy now uses
hasOwnin its property descriptor trap. Previously, theincheck incorrectly reported inherited members such astoStringas own properties.The regression tests compile real SFCs and cover props/attrs and scoped-slot props, static and dynamic slot bindings, both interop directions, own
undefinedshadowing, and dynamic addition/removal.Validation:
__DEV__=trueand__DEV__=false.git diff --checkpassed.Closes #15840