跳到内容

useCurrentElement

分类
导出大小
401 B
最后更改
3 个月前

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

演示

打开你的 console.log 查看元素

用法

ts
import { useCurrentElement } from '@vueuse/core'

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

或者传递一个特定的 vue 组件

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>

信息

仅适用于 Vue 3,因为它在底层使用了 computedWithControl

注意事项

此函数在底层使用了 $el

在组件挂载之前,ref 的值将为 undefined

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

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

类型声明

typescript
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>

源码

源码演示文档

贡献者

Anthony Fu
Anthony Fu
IlyaL
山吹色御守
Jessé Correia Lins
vaakian X

更新日志

v12.3.0 于 2025/1/2
59f75 - feat(toValue): 弃用 @vueuse/shared 中的 toValue,转而使用 Vue 原生的
v12.0.0-beta.1 于 2024/11/21
0a9ed - feat!: 移除 Vue 2 支持,优化 bundles 并清理 (#4349)
v11.1.0 于 2024/9/16
8e141 - feat: 尝试从 $el 推断类型 (#4202)
v10.8.0 于 2024/2/20
0a9aa - feat: 允许从特定组件获取当前元素 (#3750)

在 MIT 许可证下发布。