fix(main-scroll): obtain observed container element reliably to work with any Vue version #1552
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.
Obtain observed container element reliably to work with any Vue version
With the following code, we are able to retrieve the root element of a renderless component in both Vue 2 and Vue 3:
In Vue 2 and Vue 3:
slots.default?.()
-> Gives an array ofvNodes
|[0]
Gets thevNode
root and renders itIF we would return the full array of
vNodes
return () => slots.default?.()
:vNodes
as it is without problem, and we can get the root element withgetCurrentInstance()?.proxy?.$el
. Only if the default slot has a single node, otherwise, Vue will throw an error[Vue warn]: Multiple root nodes returned from render function. Render function should return a single root node.
vNodes
as aFragment
(because in Vue3 supports multiple root nodes) and when we dogetCurrentInstance()?.proxy?.$el
it gives a#text
node because the root node is theFragment
.One more thing, this scope will support
attrs
inheritance in both Vue versions ✌🏾