ElementTarget
是一个联合类型,表示 @shined/react-use
中可以被定位(targeting)的各种元素类型。
Ref
或 DOM 查询的方法,在服务器端渲染(SSR)环境中会遇到挑战。useTargetElement
。如果您正在寻找 ElementTarget
类型,请参考 ElementTarget Types。
React Hooks 经常需要访问 DOM 元素来执行如点击组件外部(useClickAway
)、悬停(useHover
)或滚动(useScroll
)等操作。
在传统上,React 中访问 HTML 元素主要有两种方式:
ref={ref}
将 Ref
附加到元素上,并在 useEffect
等地方通过 ref.current
访问它。useEffect
等地方使用 document
对象上的实例方法获取元素,如 querySelector
。虽然这些方法行之有效,但它们在 SSR 环境中引入了挑战,因为在渲染阶段直接访问元素或浏览器特定对象是不可能的。相反,开发者必须使用 useEffect
或 Ref
在客户端访问这些元素或对象。此外,开发者还经常希望通过传递 Ref
直接访问元素,这在许多 Hooks 和日常使用场景中是一个共同的需求。
为了解决这些问题,我们创建了 useTargetElement
Hook,它简化了获取目标元素的过程。这个 Hook 返回一个包含目标元素的 React Ref
:
它可以接受一个 Getter 函数作为输入,以避免 SSR 相关的错误,并且还支持包含元素的 Ref
,以增强开发体验(DX)并适应广泛的使用场景。
这个 Hook 已经服务于许多 @shined/react-use
的核心功能,例如 useClickAway
、useHover
和 useScroll
等等,它代表了需要在其 Hooks 内访问元素的开发者的最佳实践。
"🚥" 前缀表示可以是 Getter
函数,这在 SSR 中特别有用。"⚛️" 前缀表示可以是包含它的 Ref
。
#id
、.class.subclass
、tag
等。