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 等。