-
-
Notifications
You must be signed in to change notification settings - Fork 8.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
defineCustomElement does not support async component #4261
Comments
A note: when importing SFCs as custom elements, the tooling needs to process the SFC styles as inlined CSS strings for shadow DOM injection. This use case makes me realize that the current way SFC toolings handle custom elements (which imports the SFC directly as the custom element constructor) is flawed, since it makes it impossible to define a custom element with |
custom element mode no longer exports the element constructor this change is necessary to allow defining lazy elements See vuejs/core#4261
Awesome ! Thanks for the super fast fix @yyx990803 and congrats for the 3.2 release ! |
custom element mode no longer exports the element constructor this change is necessary to allow defining lazy elements See vuejs/core#4261
custom element mode no longer exports the element constructor this change is necessary to allow defining lazy elements See vuejs/core#4261
What problem does this feature solve?
While the new
defineCustomElement
feature is really nice, it does not supports async components.This feature is useful when you want to define multiple web components in one file without loading all of them (they will be loaded when the custom elements are used).
The following attempt mount the component but custom elements attributes are not passed to the Vue component.
Async components are currently supported by web-component-wrapper for Vue 2.x (https://github.com/vuejs/vue-web-component-wrapper)
What does the proposed API look like?
The
defineCustomElement
function could receive a function returning a Promise to a Vue Component like this :When the
<my-element></my-element>
element is inserted somewhere in the DOM, the MyComponent.vue file should be be downloaded by the browser (if not already) and mounted.The text was updated successfully, but these errors were encountered: