Lzh on GitHub

将当前组件的 DOM 元素作为 ref 获取。

Demo

使用

import { useCurrentElement } from '@vueuse/core'

const el = useCurrentElement() // ComputedRef<Element>

或者传入一个特定的 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>

注意事项

此函数 底层 使用 $el

直到组件挂载后,ref 的值才会是 undefined

  • 对于只有一个根元素的组件,它将指向该元素。
  • 对于以文本作为根的组件,它将指向文本节点。
  • 对于有多个根节点的组件,它将是 Vue 用于跟踪组件在 DOM 中位置的占位符 DOM 节点。

建议仅对具有 单个根元素 的组件使用此函数。

类型声明

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>