Skip to content

useCurrentElement ​

Category
Export Size
367 B
Last Changed
2 years ago

Get the DOM element of current component as a ref.

Demo ​

Open your console.log to see the element

Usage ​

ts
import { 
useCurrentElement
} from '@vueuse/core'
const
el
=
useCurrentElement
() // ComputedRef<Element>

Or pass a specific vue component

vue
<script setup lang="ts">
import { 
useCurrentElement
,
VueInstance
} from '@vueuse/core'
import {
shallowRef
} from 'vue'
const
componentRef
=
shallowRef
<
VueInstance
>(null as unknown as
VueInstance
)
const
el
=
useCurrentElement
(
componentRef
) // ComputedRef<Element>
</script> <template> <
div
>
<OtherVueComponent
ref
="
componentRef
" />
<
p
>Hello world</
p
>
</
div
>
</template>

Caveats ​

This functions uses $el under the hood.

Value of the ref will be undefined until the component is mounted.

  • For components with a single root element, it will point to that element.
  • For components with text root, it will point to the text node.
  • For components with multiple root nodes, it will be the placeholder DOM node that Vue uses to keep track of the component's position in the DOM.

It's recommend to only use this function for components with a single root element.

Type Declarations ​

ts
export declare function 
useCurrentElement
<
T
extends
MaybeElement
=
MaybeElement
,
R
extends
VueInstance
=
VueInstance
,
E
extends
MaybeElement
=
MaybeElement
extends
T
?
IsAny
<
R
["$el"]> extends false
?
R
["$el"]
:
T
:
T
,
>(
rootComponent
?:
MaybeElementRef
<
R
>):
ComputedRefWithControl
<
E
>

Source ​

Source • Demo • Docs

Contributors ​

Anthony Fu
Anthony Fu
Robin
David Gonzalez
James Garbutt
IlyaL
山吹色御守
Jessé Correia Lins
vaakian X

Changelog ​

59f75 - feat(toValue): deprecate toValue from @vueuse/shared in favor of Vue's native
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
8e141 - feat: try to infer type from $el (#4202)
0a9aa - feat: Allow get current element from a specific component (#3750)

Released under the MIT License.