Skip to content

参考 ​

组件 ​

  • ImpressionArea — ImpressionArea 是一个测量特定 DOM 元素在屏幕上可见时长、并在元素进入或离开视口时执行回调的组件。该组件使用 useImpressionRef Hook 来跟踪元素的可见性。
  • Separated — Separated 是一个在各个子元素之间插入指定组件的组件。适合用于在列表中添加分隔符、间距或其他重复出现的元素。
  • SwitchCase — SwitchCase 是一个让你根据给定值以声明式方式渲染组件的组件,类似 switch-case 语句。当你需要根据特定状态条件渲染不同组件时很有用。

Hooks ​

  • useAsyncEffect — useAsyncEffect 是一个用于在 React 组件中处理异步副作用的 Hook。它遵循与 useEffect 相同的清理模式,同时确保异步操作被安全处理。
  • useAvoidKeyboard — useAvoidKeyboard 是一个帮助固定在底部的元素避开屏幕键盘的 React Hook。它返回一个可以应用到 position: fixed 元素上的 CSS 样式,当键盘出现时平滑地将元素移动到键盘上方。
  • useBodyScrollLock — useBodyScrollLock 是一个在组件挂载期间锁定 body 滚动的 React Hook。它会在挂载时自动锁定,并在卸载时自动解锁。它适用于模态框和抽屉等覆盖层组件,这些组件必须防止其后的页面滚动。
  • useBooleanState — useBooleanState 是一个简化布尔状态管理的 React Hook。它提供函数来将状态设置为 true、设置为 false 以及切换其值。
  • useCallbackOncePerRender — useCallbackOncePerRender 是一个确保回调函数无论被调用多少次都只执行一次的 React Hook。它适用于那些即使组件重复渲染也不应重复执行的一次性操作。
  • useConditionalEffect — useConditionalEffect 是一个根据谓词函数条件性地执行 effects 的 React Hook。这让你在 effects 何时运行方面拥有比仅依赖变化更多的控制。
  • useControlledState — useControlledState 是一个允许你同时控制受控状态和不受控状态的 React Hook。如果你将状态传给 value,它就是受控状态;如果你将状态传给 defaultValue,它就是不受控状态。如果同时传入了 value 和 defaultValue,则 value 优先。
  • useCounter — useCounter 是一个管理数值计数器状态、并提供递增、递减和重置能力的 React Hook。你可以选择提供最小值和最大值来约束计数器的范围。
  • useDebounce — useDebounce 是一个返回所提供回调函数防抖版本的 React Hook。它通过延迟函数执行并将多次调用合并为一次,帮助优化事件处理。
  • useDebouncedCallback — useDebouncedCallback 是一个返回所提供回调函数防抖版本的 React Hook。它通过延迟函数执行并将多次调用合并为一次,帮助优化事件处理。
  • useDebouncedValue — useDebouncedValue 是一个返回所给值防抖副本的 React Hook。调用方始终拥有该状态;Hook 只延迟返回值的跟随速度。返回值会在最后一次变化后 wait 毫秒更新,这适用于从快速变化的状态中推导搜索查询或校验输入。
  • useDoubleClick — useDoubleClick 是一个区分单击和双击事件的 React Hook。它会将单击回调的执行延迟指定的一段时间,如果在这段时间内发生了第二次点击(即双击),则取消该回调。
  • useGeolocation — useGeolocation 是一个获取并跟踪用户地理位置的 React Hook。它使用浏览器的 Geolocation API,同时支持一次性位置获取和持续的定位跟踪。
  • useImpressionRef — useImpressionRef 是一个测量特定 DOM 元素在屏幕上可见时长、并在元素进入或退出视口时执行回调的 React Hook。它使用 IntersectionObserver 和 Visibility API 来跟踪元素的可见性。
  • useInputState — useInputState 是一个管理输入状态并支持可选值转换的 React Hook。返回的 onChange 处理函数同时适用于 <input> 和 <textarea> 元素。
  • useIntersectionObserver — useIntersectionObserver 是一个检测特定 DOM 元素是否在屏幕上可见的 React Hook。它使用 IntersectionObserver API,在元素进入或退出视口时执行回调。
  • useInterval — useInterval 是一个按指定时间间隔执行函数的 React Hook。它适用于计时器、轮询数据以及其他周期性任务。
  • useIsClient — useIsClient 是一个仅在客户端环境中返回 true 的 React Hook。它主要用于区分客户端渲染和服务端渲染(SSR)。只有当组件挂载到客户端环境中后,该状态才会被设置为 true。
  • useIsomorphicLayoutEffect — useIsomorphicLayoutEffect 是一个 React Hook,它在浏览器中运行 useLayoutEffect,同时避免在服务端渲染(SSR)期间触发其警告。在 SSR 期间,没有 DOM 可供同步测量或变更,因此在 React 18 及更早版本中,使用 useLayoutEffect 会触发警告。effect 只会在浏览器中运行。此 Hook 只负责避免警告,不会让服务端输出与客户端保持一致。React 19 不再发出该警告,因此在 React 19 中可以直接使用 useLayoutEffect。
  • useKeyboardHeight — useKeyboardHeight 是一个跟踪屏幕键盘高度的 React Hook。它返回当前键盘的高度(像素),当键盘出现、消失或改变大小时会自动更新。
  • useList — 一个将数组作为状态进行管理的 React Hook。它提供高效的状态管理和稳定的操作函数。 初始状态和 setAll 均接受可变数组和只读数组。
  • useLoading — useLoading 是一个简化 Promise 加载状态管理的 React Hook。它提供一个状态来跟踪异步操作是否正在进行,并提供一个函数来自动处理加载状态。
  • useLongPress — useLongPress 是一个检测元素被按压并按住指定时长的 React Hook。它同时处理鼠标和触摸事件,使它在桌面和移动设备上都能一致地工作。
  • useMap — 一个将键值 Map 作为状态进行管理的 React Hook。它提供高效的状态管理和稳定的操作函数。
  • useNetworkStatus — useNetworkStatus 是一个提供 Network Information API 访问权限的 React Hook。它提供原始的网络连接数据,例如连接类型、连接质量、速度以及用户的数据节省偏好。如果该 API 不受支持(例如 Safari、Firefox),每个属性都是 undefined。
  • useOutsideClickEffect — useOutsideClickEffect 是一个在点击事件发生于指定容器之外时触发回调的 React Hook。它适用于在点击外部时关闭模态框、下拉菜单、工具提示以及其他 UI 组件。
  • usePageVisibility — usePageVisibility 是一个检测页面可见性变化的 React Hook。它使用 Page Visibility API 监控用户何时切换标签页或最小化浏览器。它适用于暂停或恢复动画、视频或后台任务,以提升性能并改善用户体验。
  • usePreservedCallback — usePreservedCallback 是一个维持回调函数稳定引用、同时确保它始终能访问最新状态或 props 的 React Hook。这可以避免不必要的重复渲染,并在将回调传给子组件或处理事件监听器时简化依赖管理。
  • usePreservedReference — usePreservedReference 是一个在值未变化时帮助维持其引用、同时确保你始终能安全使用最新状态的 React Hook。它在避免不必要的重复渲染的同时,始终允许访问最新数据。
  • usePrevious — usePrevious 是一个返回输入状态之前值的 React Hook。当发生未伴随状态变化的重复渲染时,它会原样保留之前的值。如果该状态是对象或需要自定义变化检测,则可以提供 compare 函数。默认情况下,状态变化通过 prev === next 来检测。
  • useRefEffect — useRefEffect 是一个帮助你为特定 DOM 元素设置引用、并在元素变化时执行回调的 React Hook。此 Hook 会在元素变化时调用清理函数,以防止内存泄漏。
  • useSafeAreaInset — useSafeAreaInset 是一个跟踪安全区域内边距变化的 React Hook。它返回安全区域的内边距,当屏幕方向变化(例如从竖屏到横屏)时会自动更新。
  • useScrollDirection — useScrollDirection 是一个检测滚动方向的 React Hook。它返回滚动方向(向上/向下)和当前的滚动位置。默认进行节流(50ms)以优化性能。
  • useSet — 一个将 Set 作为状态进行管理的 React Hook。它提供高效的状态管理和稳定的操作函数。
  • useStorageState — useStorageState 是一个功能类似于 useState、但会将状态值持久化到浏览器存储中的 React Hook。该值会在页面刷新后保留,并且在配合 localStorage 使用时可以在标签页之间共享。
  • useThrottle — useThrottle 是一个创建回调函数节流版本的 React Hook。它适用于限制函数的调用频率,例如在处理滚动或调整大小事件时。
  • useThrottledCallback — useThrottledCallback 是一个返回所提供回调函数节流版本的 React Hook。节流后的回调在指定的时间间隔内最多只会被调用一次。
  • useThrottledValue — useThrottledValue 是一个返回所给值节流副本的 React Hook。调用方始终拥有该状态;返回值每 wait 毫秒至多跟随一次,这适用于用滚动位置、指针位置或元素在调整大小时的尺寸来驱动昂贵的渲染。
  • useTimeout — useTimeout 是一个在指定延迟后执行回调函数的 React Hook。它按照 React 生命周期来管理 setTimeout,确保在卸载时或依赖变化时执行清理。
  • useToggle — useToggle 是一个简化布尔状态管理的 React Hook。它提供函数在 true 和 false 之间切换状态。
  • useVisibilityEvent — useVisibilityEvent 是一个监听文档可见性状态变化并触发回调的 React Hook。
  • useVisualViewport — useVisualViewport 是一个跟踪 Visual Viewport 变化的 React Hook。它返回移动 WebView 中实际可见的区域,当键盘出现或用户缩放、滚动时,该区域会发生变化。

工具函数 ​

  • buildContext — buildContext 是一个减少定义 React Context 时重复代码的辅助函数。
  • disableBodyScrollLock — disableBodyScrollLock 是一个解除 body 滚动锁定的工具函数。它会恢复被 enableBodyScrollLock 锁定的滚动,并回到保存的滚动位置。
  • enableBodyScrollLock — enableBodyScrollLock 是一个锁定 body 滚动的工具函数。它通过应用固定定位来阻止 body 滚动,在打开模态框、抽屉或其他覆盖层组件时很有用。
  • getKeyboardHeight — getKeyboardHeight 是一个返回当前屏幕键盘高度(以像素为单位)的工具函数。
  • getSafeAreaInset — getSafeAreaInset 是一个以对象形式返回所有安全区域内边距(以像素为单位)的工具函数。
  • isAndroid — isAndroid 是一个检测当前设备是否运行 Android 的工具函数。
  • isIOS — isIOS 是一个检测当前设备是否运行 iOS 或 iPadOS 的工具函数。
  • isKeyboardVisible — isKeyboardVisible 是一个检查屏幕键盘当前是否可见的工具函数。
  • isServer — isServer 是一个判断当前代码是否运行在服务端的工具函数。在 window 未定义的 SSR(服务端渲染)环境中返回 true,在客户端环境中返回 false。
  • mergeProps — mergeProps 是一个将多个 props 对象合并为单个对象的工具函数。它会处理 className、style 和 function 属性的合并。
  • mergeRefs — mergeRefs 接收多个 ref(RefObject 或 RefCallback),返回一个能更新所有传入 ref 的单一 ref。当你需要向单个元素同时传递多个 ref 时很有用。当回调 ref 返回清理函数(React 19)时,合并后的 ref 也会返回一个清理函数,并在分离时执行所有清理操作。
  • subscribeKeyboardHeight — subscribeKeyboardHeight 是一个订阅屏幕键盘高度变化的工具函数。

基于 MIT 许可证发布。