fix(custom-element): update initial render for defineCustomElement to run after nextTick #11335
+45
−15
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.
Problem
There is an edge case where using Vue generated custom elements inside of a Vue app with
v-model
will cause duplication inside of theShadowRoot
.Solution
Waiting for the
nextTick
seems to resolve a collision betweenv-model
and the custom element's initial render. This fix also limits impact to custom element users rather than all Vue users.For example, you can also resolve the issue by putting a small timeout (or presumably also waiting for
nextTick
) around the initial setting of the value in vModel.ts.Testing the fix
Here are some examples in Stackblitz and the SFC playground to test the change:
v-model
nextTick
updateclose: #9885