From 0a3feee0c84277c46e51b193225e4b111344cb11 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 18:56:05 +0800 Subject: [PATCH 01/77] chore: add jsdoc --- packages/hooks/src/useAntdTable/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useAntdTable/index.tsx b/packages/hooks/src/useAntdTable/index.tsx index e487bc4796..1cb54268f6 100644 --- a/packages/hooks/src/useAntdTable/index.tsx +++ b/packages/hooks/src/useAntdTable/index.tsx @@ -12,6 +12,10 @@ import type { AntdTableResult, } from './types'; +/** + * `useAntdTable` is implemented based on [useRequest](https://ahooks.js.org/hooks/use-request/index) and encapsulates the commonly used [Ant Design Form](https://ant.design/components/form/) and [Ant Design Table](https://ant.design/components/table/) data binding logic, and supports both antd v3 and v4. + * @see https://ahooks.js.org/hooks/use-antd-table + */ const useAntdTable = ( service: Service, options: AntdTableOptions = {}, From e4693e469db7b5055666d34d8fcc0e2336e189e7 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 18:57:32 +0800 Subject: [PATCH 02/77] chore: add jsdoc --- packages/hooks/src/useAsyncEffect/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useAsyncEffect/index.ts b/packages/hooks/src/useAsyncEffect/index.ts index 99ba26409b..69d73c415d 100644 --- a/packages/hooks/src/useAsyncEffect/index.ts +++ b/packages/hooks/src/useAsyncEffect/index.ts @@ -8,6 +8,10 @@ function isAsyncGenerator( return isFunction(val[Symbol.asyncIterator]); } +/** + * useEffect support async function. + * @see https://ahooks.js.org/hooks/use-async-effect + */ function useAsyncEffect( effect: () => AsyncGenerator | Promise, deps?: DependencyList, From 23ff7b9b7a06fd2d18cc3539c8832ee108af51d6 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:03:07 +0800 Subject: [PATCH 03/77] chore: add jsdoc --- packages/hooks/src/useBoolean/index.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/hooks/src/useBoolean/index.ts b/packages/hooks/src/useBoolean/index.ts index d0a2b7a12a..d6588d4183 100644 --- a/packages/hooks/src/useBoolean/index.ts +++ b/packages/hooks/src/useBoolean/index.ts @@ -8,6 +8,14 @@ export interface Actions { toggle: () => void; } +/** + * Elegantly manages boolean state. + * @see https://ahooks.js.org/hooks/use-boolean + * @example + * ```jsx + * const [state, { toggle, setTrue, setFalse }] = useBoolean(true); + * ``` + */ export default function useBoolean(defaultValue = false): [boolean, Actions] { const [state, { toggle, set }] = useToggle(!!defaultValue); From 1539b369552dd69834c6b56c0d152f1da7f8c112 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:04:00 +0800 Subject: [PATCH 04/77] chore: add jsdoc --- packages/hooks/src/useClickAway/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useClickAway/index.ts b/packages/hooks/src/useClickAway/index.ts index 92f1a7ba54..3bcf654aac 100644 --- a/packages/hooks/src/useClickAway/index.ts +++ b/packages/hooks/src/useClickAway/index.ts @@ -6,6 +6,10 @@ import useEffectWithTarget from '../utils/useEffectWithTarget'; type DocumentEventKey = keyof DocumentEventMap; +/** + * Listen for click events outside the target element. + * @see https://ahooks.js.org/hooks/use-click-away + */ export default function useClickAway( onClickAway: (event: T) => void, target: BasicTarget | BasicTarget[], From e33b88f395dfeb00a9370963abad611a86136a48 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:12:35 +0800 Subject: [PATCH 05/77] chore: add jsdoc --- packages/hooks/src/useControllableValue/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useControllableValue/index.ts b/packages/hooks/src/useControllableValue/index.ts index f9e7759990..a39fb44a04 100644 --- a/packages/hooks/src/useControllableValue/index.ts +++ b/packages/hooks/src/useControllableValue/index.ts @@ -19,6 +19,10 @@ export interface StandardProps { onChange: (val: T) => void; } +/** + * Controlled and uncontrolled + * @see https://ahooks.js.org/hooks/use-controllable-value) + */ function useControllableValue( props: StandardProps, ): [T, (v: SetStateAction) => void]; From 07f2ba858ae2ea3949296836044c2e515e67789e Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:13:36 +0800 Subject: [PATCH 06/77] chore: add jsdoc --- packages/hooks/src/useCookieState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useCookieState/index.ts b/packages/hooks/src/useCookieState/index.ts index feb536869f..be9e17fa6b 100644 --- a/packages/hooks/src/useCookieState/index.ts +++ b/packages/hooks/src/useCookieState/index.ts @@ -9,6 +9,10 @@ export interface Options extends Cookies.CookieAttributes { defaultValue?: State | (() => State); } +/** + * A Hook that store state into Cookie. + * @see https://ahooks.js.org/hooks/use-cookie-state + */ function useCookieState(cookieKey: string, options: Options = {}) { const [state, setState] = useState(() => { const cookieValue = Cookies.get(cookieKey); From ece4328244e529aadc3a11630e38e984d86fd586 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:14:55 +0800 Subject: [PATCH 07/77] chore: add jsdoc --- packages/hooks/src/useCountDown/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useCountDown/index.ts b/packages/hooks/src/useCountDown/index.ts index 6f64a9711f..46eff6e22d 100644 --- a/packages/hooks/src/useCountDown/index.ts +++ b/packages/hooks/src/useCountDown/index.ts @@ -39,6 +39,10 @@ const parseMs = (milliseconds: number): FormattedRes => { }; }; +/** + * A hook for manage countdown. + * @see https://ahooks.js.org/hooks/use-count-down + */ const useCountdown = (options: Options = {}) => { const { leftTime, targetDate, interval = 1000, onEnd } = options || {}; From fd82fb0d21b7f4c4bb701e6430689fd6e6ffdc72 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:16:37 +0800 Subject: [PATCH 08/77] chore: add jsdoc --- packages/hooks/src/useCounter/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useCounter/index.ts b/packages/hooks/src/useCounter/index.ts index a3cb34f7e3..80197d9c12 100644 --- a/packages/hooks/src/useCounter/index.ts +++ b/packages/hooks/src/useCounter/index.ts @@ -28,6 +28,10 @@ function getTargetValue(val: number, options: Options = {}) { return target; } +/** + * A hook that manage counter. + * @see https://ahooks.js.org/hooks/use-counter + */ function useCounter(initialValue: number = 0, options: Options = {}) { const { min, max } = options; From 893efc7efd8911e3e12aa966759ee27f78cb297d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:16:47 +0800 Subject: [PATCH 09/77] chore: add jsdoc --- packages/hooks/src/useCreation/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useCreation/index.ts b/packages/hooks/src/useCreation/index.ts index ca8bf4a813..1175262765 100644 --- a/packages/hooks/src/useCreation/index.ts +++ b/packages/hooks/src/useCreation/index.ts @@ -2,6 +2,10 @@ import type { DependencyList } from 'react'; import { useRef } from 'react'; import depsAreSame from '../utils/depsAreSame'; +/** + * `useCreation` is the replacement for `useMemo` or `useRef`. + * @see https://ahooks.js.org/hooks/use-creation + */ export default function useCreation(factory: () => T, deps: DependencyList) { const { current } = useRef({ deps, From f4e562cea0f431168df37622ed86b4d9b28c2bd8 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:17:21 +0800 Subject: [PATCH 10/77] chore: add jsdoc --- packages/hooks/src/useDebounce/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDebounce/index.ts b/packages/hooks/src/useDebounce/index.ts index baff02e742..b5aecda707 100644 --- a/packages/hooks/src/useDebounce/index.ts +++ b/packages/hooks/src/useDebounce/index.ts @@ -2,6 +2,10 @@ import { useEffect, useState } from 'react'; import useDebounceFn from '../useDebounceFn'; import type { DebounceOptions } from './debounceOptions'; +/** + * A hook that deal with the debounced value. + * @see https://ahooks.js.org/hooks/use-debounce + */ function useDebounce(value: T, options?: DebounceOptions) { const [debounced, setDebounced] = useState(value); From fcdcc372cf71c996434cb43dbfe44ec7ecc4ca76 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:18:04 +0800 Subject: [PATCH 11/77] chore: add jsdoc --- packages/hooks/src/useDebounceEffect/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDebounceEffect/index.ts b/packages/hooks/src/useDebounceEffect/index.ts index 2866d91d98..6b2bfd4735 100644 --- a/packages/hooks/src/useDebounceEffect/index.ts +++ b/packages/hooks/src/useDebounceEffect/index.ts @@ -4,6 +4,10 @@ import type { DebounceOptions } from '../useDebounce/debounceOptions'; import useDebounceFn from '../useDebounceFn'; import useUpdateEffect from '../useUpdateEffect'; +/** + * Debounce your `useEffect`. + * @see https://ahooks.js.org/hooks/use-debounce-effect + */ function useDebounceEffect( effect: EffectCallback, deps?: DependencyList, From 2ea35870083ddeca5e83a9d66f6bec7d7fd09d27 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:18:56 +0800 Subject: [PATCH 12/77] chore: add jsdoc --- packages/hooks/src/useDebounceFn/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDebounceFn/index.ts b/packages/hooks/src/useDebounceFn/index.ts index 24910f4b37..7ba58fbf7f 100644 --- a/packages/hooks/src/useDebounceFn/index.ts +++ b/packages/hooks/src/useDebounceFn/index.ts @@ -8,6 +8,10 @@ import isDev from '../utils/isDev'; type noop = (...args: any[]) => any; +/** + * A hook that deal with the debounced function. + * @see https://ahooks.js.org/hooks/use-debounce-fn + */ function useDebounceFn(fn: T, options?: DebounceOptions) { if (isDev) { if (!isFunction(fn)) { From 0256a54bdcb682f9c111e52d8e866a05ab389550 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:20:45 +0800 Subject: [PATCH 13/77] chore: add jsdoc --- packages/hooks/src/useDeepCompareEffect/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDeepCompareEffect/index.tsx b/packages/hooks/src/useDeepCompareEffect/index.tsx index 90c3639617..3700467df0 100644 --- a/packages/hooks/src/useDeepCompareEffect/index.tsx +++ b/packages/hooks/src/useDeepCompareEffect/index.tsx @@ -1,4 +1,8 @@ import { useEffect } from 'react'; import { createDeepCompareEffect } from '../createDeepCompareEffect'; +/** + * Usage is the same as `useEffect`, but deps are compared with [lodash.isEqual](https://lodash.com/docs/4.17.15#isEqual). + * @see https://ahooks.js.org/hooks/use-deep-compare-effect + */ export default createDeepCompareEffect(useEffect); From f34d462dde88057e611b9dbc927ba31a0cedccc2 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:21:39 +0800 Subject: [PATCH 14/77] chore: add jsdoc --- packages/hooks/src/useDeepCompareLayoutEffect/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDeepCompareLayoutEffect/index.tsx b/packages/hooks/src/useDeepCompareLayoutEffect/index.tsx index 36b3005622..dbd8147b5c 100644 --- a/packages/hooks/src/useDeepCompareLayoutEffect/index.tsx +++ b/packages/hooks/src/useDeepCompareLayoutEffect/index.tsx @@ -1,4 +1,8 @@ import { useLayoutEffect } from 'react'; import { createDeepCompareEffect } from '../createDeepCompareEffect'; +/** + * Usage is the same as `useLayoutEffect`, but deps are compared with [lodash.isEqual](https://lodash.com/docs/4.17.15#isEqual). + * @see https://ahooks.js.org/hooks/use-deep-compare-layout-effect + */ export default createDeepCompareEffect(useLayoutEffect); From 8237ea3c6f9c766bfb6386033c1246ed94324443 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:25:06 +0800 Subject: [PATCH 15/77] chore: add jsdoc --- packages/hooks/src/useDocumentVisibility/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDocumentVisibility/index.ts b/packages/hooks/src/useDocumentVisibility/index.ts index e5f294c969..b68f73fc55 100644 --- a/packages/hooks/src/useDocumentVisibility/index.ts +++ b/packages/hooks/src/useDocumentVisibility/index.ts @@ -11,6 +11,10 @@ const getVisibility = () => { return document.visibilityState; }; +/** + * A Hook can tell if the page is visible, refer to [visibilityState API](https://developer.mozilla.org/docs/Web/API/Document/visibilityState) + * @see https://ahooks.js.org/hooks/use-document-visibility + */ function useDocumentVisibility(): VisibilityState { const [documentVisibility, setDocumentVisibility] = useState(() => getVisibility()); From d55a94cb2e796341725298eba41d09079f1e83fc Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:29:04 +0800 Subject: [PATCH 16/77] chore: add jsdoc --- packages/hooks/src/useDrag/index.ts | 4 ++++ packages/hooks/src/useDrop/index.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/hooks/src/useDrag/index.ts b/packages/hooks/src/useDrag/index.ts index bff76608bc..4e3582a6d5 100644 --- a/packages/hooks/src/useDrag/index.ts +++ b/packages/hooks/src/useDrag/index.ts @@ -16,6 +16,10 @@ export interface Options { }; } +/** + * help you manage data transfer between drag and drop + * @see https://ahooks.js.org/hooks/use-drop + */ const useDrag = (data: T, target: BasicTarget, options: Options = {}) => { const optionsRef = useLatest(options); const dataRef = useLatest(data); diff --git a/packages/hooks/src/useDrop/index.ts b/packages/hooks/src/useDrop/index.ts index a340cb4f0b..ef4fa5ba1a 100644 --- a/packages/hooks/src/useDrop/index.ts +++ b/packages/hooks/src/useDrop/index.ts @@ -16,6 +16,10 @@ export interface Options { onPaste?: (event?: React.ClipboardEvent) => void; } +/** + * help you manage data transfer between drag and drop + * @see https://ahooks.js.org/hooks/use-drop + */ const useDrop = (target: BasicTarget, options: Options = {}) => { const optionsRef = useLatest(options); From 5af4f5ba75e03fee11bdaab984d3cec616243f82 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:30:59 +0800 Subject: [PATCH 17/77] chore: add jsdoc --- packages/hooks/src/useDynamicList/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useDynamicList/index.ts b/packages/hooks/src/useDynamicList/index.ts index 1bcdd162cf..2976174d2e 100644 --- a/packages/hooks/src/useDynamicList/index.ts +++ b/packages/hooks/src/useDynamicList/index.ts @@ -1,5 +1,9 @@ import { useCallback, useRef, useState } from 'react'; +/** + * A hook that helps you manage dynamic list and generate unique key for each item. + * @see https://ahooks.js.org/hooks/use-dynamic-list + */ const useDynamicList = (initialList: T[] = []) => { const counterRef = useRef(-1); From 359dc110c64db42b29ab20438dcf59502f33c0b9 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:33:29 +0800 Subject: [PATCH 18/77] chore: add jsdoc --- packages/hooks/src/useEventEmitter/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useEventEmitter/index.ts b/packages/hooks/src/useEventEmitter/index.ts index 0b6a801b88..6e144dbed3 100644 --- a/packages/hooks/src/useEventEmitter/index.ts +++ b/packages/hooks/src/useEventEmitter/index.ts @@ -30,6 +30,10 @@ export class EventEmitter { }; } +/** + * Simplifying multiple component passing of parameters + * @see https://ahooks.js.org/hooks/use-event-emitter + */ export default function useEventEmitter() { const ref = useRef>(); if (!ref.current) { From 32269794ae0c6007923b89a734f6ae9a0a99c4a9 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:34:47 +0800 Subject: [PATCH 19/77] chore: add jsdoc --- packages/hooks/src/useEventListener/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useEventListener/index.ts b/packages/hooks/src/useEventListener/index.ts index 12a8eb60b1..505d36fc7c 100644 --- a/packages/hooks/src/useEventListener/index.ts +++ b/packages/hooks/src/useEventListener/index.ts @@ -14,6 +14,10 @@ type Options = { passive?: boolean; }; +/** + * Use addEventListener elegant by Hook. + * @see https://ahooks.js.org/hooks/use-event-listener + */ function useEventListener( eventName: K, handler: (ev: HTMLElementEventMap[K]) => void, From 817575bcb61089fb621edf7aef4f4091efafc7d8 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:38:32 +0800 Subject: [PATCH 20/77] chore: add jsdoc --- packages/hooks/src/useEventTarget/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useEventTarget/index.ts b/packages/hooks/src/useEventTarget/index.ts index ff1bad78d7..6012e64f78 100644 --- a/packages/hooks/src/useEventTarget/index.ts +++ b/packages/hooks/src/useEventTarget/index.ts @@ -13,6 +13,10 @@ export interface Options { transformer?: (value: U) => T; } +/** + * A hook that encapsulates `onChange` and `value` logic for form controls that obtains value through `event.target.value`. + * @see https://ahooks.js.org/hooks/use-event-target + */ function useEventTarget(options?: Options) { const { initialValue, transformer } = options || {}; const [value, setValue] = useState(initialValue); From 320cca878ef8df4efaf6ab9633d3778daaf1e7c8 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:39:17 +0800 Subject: [PATCH 21/77] chore: add jsdoc --- packages/hooks/src/useExternal/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useExternal/index.ts b/packages/hooks/src/useExternal/index.ts index 610793953d..9f71fce4b5 100644 --- a/packages/hooks/src/useExternal/index.ts +++ b/packages/hooks/src/useExternal/index.ts @@ -90,6 +90,10 @@ const loadCss = (path: string, props = {}): loadResult => { }; }; +/** + * Dynamically load JS or CSS, useExternal can ensure that the resource are globally unique. + * @see https://ahooks.js.org/hooks/use-external + */ const useExternal = (path?: string, options?: Options) => { const [status, setStatus] = useState(path ? 'loading' : 'unset'); From 80fe30cead745622958c1c73327572020ec8b15a Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:40:48 +0800 Subject: [PATCH 22/77] chore: add jsdoc --- packages/hooks/src/useFavicon/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useFavicon/index.ts b/packages/hooks/src/useFavicon/index.ts index 3c923ea860..91a2ffd7b8 100644 --- a/packages/hooks/src/useFavicon/index.ts +++ b/packages/hooks/src/useFavicon/index.ts @@ -9,6 +9,10 @@ const ImgTypeMap = { type ImgTypes = keyof typeof ImgTypeMap; +/** + * A hook that set the favicon of the page. + * @see https://ahooks.js.org/hooks/use-favicon + */ const useFavicon = (href: string) => { useEffect(() => { if (!href) return; From c63d247c7c92178af4820ce9d4492b0b75a6761a Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:43:03 +0800 Subject: [PATCH 23/77] chore: add jsdoc --- packages/hooks/src/useFocusWithin/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useFocusWithin/index.tsx b/packages/hooks/src/useFocusWithin/index.tsx index caf39b77ea..44a4b34274 100644 --- a/packages/hooks/src/useFocusWithin/index.tsx +++ b/packages/hooks/src/useFocusWithin/index.tsx @@ -8,6 +8,10 @@ export interface Options { onChange?: (isFocusWithin: boolean) => void; } +/** + * Monitor whether the current focus is within a certain area, Same as css attribute [:focus-within](https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-within). + * @see https://ahooks.js.org/hooks/use-focus-within + */ export default function useFocusWithin(target: BasicTarget, options?: Options) { const [isFocusWithin, setIsFocusWithin] = useState(false); const { onFocus, onBlur, onChange } = options || {}; From 9b510ef4a6913a5d524a8d7314ee81f1a5ca6d68 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:43:34 +0800 Subject: [PATCH 24/77] chore: add jsdoc --- packages/hooks/src/useFullscreen/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useFullscreen/index.ts b/packages/hooks/src/useFullscreen/index.ts index 3220ca8fb1..9de6e21728 100644 --- a/packages/hooks/src/useFullscreen/index.ts +++ b/packages/hooks/src/useFullscreen/index.ts @@ -17,6 +17,10 @@ export interface Options { pageFullscreen?: boolean | PageFullscreenOptions; } +/** + * manages DOM full screen. + * @see https://ahooks.js.org/hooks/use-fullscreen + */ const useFullscreen = (target: BasicTarget, options?: Options) => { const { onExit, onEnter, pageFullscreen = false } = options || {}; const { className = 'ahooks-page-fullscreen', zIndex = 999999 } = From 71af3275082ce3320c5a9ba5a4f1179e64aebd7b Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:44:42 +0800 Subject: [PATCH 25/77] chore: add jsdoc --- packages/hooks/src/useFusionTable/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useFusionTable/index.tsx b/packages/hooks/src/useFusionTable/index.tsx index f1d768727b..d1125914fa 100644 --- a/packages/hooks/src/useFusionTable/index.tsx +++ b/packages/hooks/src/useFusionTable/index.tsx @@ -3,6 +3,10 @@ import type { Data, Params, Service } from '../useAntdTable/types'; import { fieldAdapter, resultAdapter } from './fusionAdapter'; import type { FusionTableOptions, FusionTableResult } from './types'; +/** + * `useFusionTable` encapsulates the commonly used [Fusion Form](https://fusion.design/pc/component/basic/form) and [Fusion Table](https://fusion.design/pc/component/basic/table) data binding logic. + * @see https://ahooks.js.org/hooks/use-fusion-table + */ const useFusionTable = ( service: Service, options: FusionTableOptions = {}, From 9ba017d34002588ed1b79062d3c882246564dd9b Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:45:55 +0800 Subject: [PATCH 26/77] chore: add jsdoc --- packages/hooks/src/useGetState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useGetState/index.ts b/packages/hooks/src/useGetState/index.ts index 51f76c61aa..4c17dfb76c 100644 --- a/packages/hooks/src/useGetState/index.ts +++ b/packages/hooks/src/useGetState/index.ts @@ -3,6 +3,10 @@ import { useState, useRef, useCallback } from 'react'; type GetStateAction = () => S; +/** + * Add a getter method to the return value of `React.useState` to get the latest value + * @see https://ahooks.js.org/hooks/use-get-state + */ function useGetState( initialState: S | (() => S), ): [S, Dispatch>, GetStateAction]; From 88ede8b70f71370837ddda4b36af8f771fa5ea8d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:48:03 +0800 Subject: [PATCH 27/77] chore: add jsdoc --- packages/hooks/src/useHistoryTravel/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useHistoryTravel/index.ts b/packages/hooks/src/useHistoryTravel/index.ts index 24124fa543..79a66da653 100644 --- a/packages/hooks/src/useHistoryTravel/index.ts +++ b/packages/hooks/src/useHistoryTravel/index.ts @@ -31,6 +31,10 @@ const split = (step: number, targetArr: T[]) => { }; }; +/** + * A hook to manage state change history. It provides encapsulation methods to travel through the history. + * @see https://ahooks.js.org/hooks/use-history-travel + */ export default function useHistoryTravel(initialValue?: T, maxLength: number = 0) { const [history, setHistory] = useState>({ present: initialValue, From f9799cf2e36e9aab5ee718a8a7a13380c15685d9 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:48:48 +0800 Subject: [PATCH 28/77] chore: add jsdoc --- packages/hooks/src/useHover/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useHover/index.ts b/packages/hooks/src/useHover/index.ts index 0e319680d7..fb72f5c48e 100644 --- a/packages/hooks/src/useHover/index.ts +++ b/packages/hooks/src/useHover/index.ts @@ -8,6 +8,10 @@ export interface Options { onChange?: (isHovering: boolean) => void; } +/** + * A hook that tracks whether the element is being hovered. + * @see https://ahooks.js.org/hooks/use-hover + */ export default (target: BasicTarget, options?: Options): boolean => { const { onEnter, onLeave, onChange } = options || {}; From 0cbced8a4889876d9d53fa1371113ba5df2521e6 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:49:40 +0800 Subject: [PATCH 29/77] chore: add jsdoc --- packages/hooks/src/useInfiniteScroll/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useInfiniteScroll/index.tsx b/packages/hooks/src/useInfiniteScroll/index.tsx index a559c562d1..1fe4b0714a 100644 --- a/packages/hooks/src/useInfiniteScroll/index.tsx +++ b/packages/hooks/src/useInfiniteScroll/index.tsx @@ -7,6 +7,10 @@ import { getTargetElement } from '../utils/domTarget'; import { getClientHeight, getScrollHeight, getScrollTop } from '../utils/rect'; import type { Data, InfiniteScrollOptions, Service } from './types'; +/** + * `useInfiniteScroll` encapsulates the common infinite scroll logic. + * @see https://ahooks.js.org/hooks/use-infinite-scroll + */ const useInfiniteScroll = ( service: Service, options: InfiniteScrollOptions = {}, From 18253fedb625bcaca4f79ee209822e74b27a4f1f Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:50:47 +0800 Subject: [PATCH 30/77] chore: add jsdoc --- packages/hooks/src/useInterval/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useInterval/index.ts b/packages/hooks/src/useInterval/index.ts index 8bf9d8d12f..f510b9f241 100644 --- a/packages/hooks/src/useInterval/index.ts +++ b/packages/hooks/src/useInterval/index.ts @@ -2,6 +2,10 @@ import { useCallback, useEffect, useRef } from 'react'; import useMemoizedFn from '../useMemoizedFn'; import { isNumber } from '../utils'; +/** + * A hook that handles the `setInterval` timer function. + * @see https://ahooks.js.org/hooks/use-interval + */ const useInterval = (fn: () => void, delay?: number, options: { immediate?: boolean } = {}) => { const timerCallback = useMemoizedFn(fn); const timerRef = useRef(null); From 72590e345409b7522888d2a18bbecfb73ecfc563 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:51:45 +0800 Subject: [PATCH 31/77] chore: add jsdoc --- packages/hooks/src/useInViewport/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useInViewport/index.ts b/packages/hooks/src/useInViewport/index.ts index c5b53b94f4..ef41eadd1e 100644 --- a/packages/hooks/src/useInViewport/index.ts +++ b/packages/hooks/src/useInViewport/index.ts @@ -13,6 +13,10 @@ export interface Options { callback?: CallbackType; } +/** + * Observe whether the element is in the visible area, and the visible area ratio of the element. refer to [Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API). + * @see https://ahooks.js.org/hooks/use-in-viewport + */ function useInViewport(target: BasicTarget | BasicTarget[], options?: Options) { const { callback, ...option } = options || {}; From 63d5b1c20cd985efb1fd40741e3c2aad0fbb7f0d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 19:52:31 +0800 Subject: [PATCH 32/77] chore: add jsdoc --- .../src/useIsomorphicLayoutEffect/index.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/hooks/src/useIsomorphicLayoutEffect/index.ts b/packages/hooks/src/useIsomorphicLayoutEffect/index.ts index ae83221c1f..cee6a84014 100644 --- a/packages/hooks/src/useIsomorphicLayoutEffect/index.ts +++ b/packages/hooks/src/useIsomorphicLayoutEffect/index.ts @@ -1,6 +1,26 @@ import { useEffect, useLayoutEffect } from 'react'; import isBrowser from '../utils/isBrowser'; +/** + * Return useLayoutEffect for browser environment and useEffect for other environments. + * @description + * In SSR mode, the following warning will appear when useLayoutEffect is used + * + * > ⚠️ Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://fb.me/react-uselayouteffect-ssr for common fixes. + * + * To avoid this warning, `useIsomorphicLayoutEffect` can be used instead of useLayoutEffect. + * + * The source code: + * + * ```javascript + * const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect; + * ``` + * + * Return useLayoutEffect for browser environment and useEffect for other environments. + * + * For more information, please refer to [useLayoutEffect and SSR](https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a) + * @see https://ahooks.js.org/hooks/use-isomorphic-layout-effect + */ const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect; export default useIsomorphicLayoutEffect; From 97e77d098591cb5503125f48b88ccc193bae376d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:01:41 +0800 Subject: [PATCH 33/77] chore: add jsdoc --- packages/hooks/src/useKeyPress/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useKeyPress/index.ts b/packages/hooks/src/useKeyPress/index.ts index 9e804b4016..d227c4415c 100644 --- a/packages/hooks/src/useKeyPress/index.ts +++ b/packages/hooks/src/useKeyPress/index.ts @@ -220,6 +220,10 @@ function genKeyFormatter(keyFilter: KeyFilter, exactMatch: boolean): KeyPredicat const defaultEvents: KeyEvent[] = ['keydown']; +/** + * Listen for the keyboard press, support key combinations, and support alias. + * @see https://ahooks.js.org/hooks/use-key-press + */ function useKeyPress( keyFilter: KeyFilter, eventHandler: (event: KeyboardEvent, key: KeyType) => void, From 979c25ec462d063457f4dc1938500dc0ba513234 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:02:23 +0800 Subject: [PATCH 34/77] chore: add jsdoc --- packages/hooks/src/useLatest/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useLatest/index.ts b/packages/hooks/src/useLatest/index.ts index d9897e2bcf..928285228f 100644 --- a/packages/hooks/src/useLatest/index.ts +++ b/packages/hooks/src/useLatest/index.ts @@ -1,5 +1,9 @@ import { useRef } from 'react'; +/** + * A Hook that returns the latest value, effectively avoiding the closure problem. + * @see https://ahooks.js.org/hooks/use-latest + */ function useLatest(value: T) { const ref = useRef(value); ref.current = value; From 7703b718f4523987e1328a4432abe85da8c36596 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:03:07 +0800 Subject: [PATCH 35/77] chore: add jsdoc --- packages/hooks/src/useLocalStorageState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useLocalStorageState/index.ts b/packages/hooks/src/useLocalStorageState/index.ts index 304e08af01..8bc2c0e746 100644 --- a/packages/hooks/src/useLocalStorageState/index.ts +++ b/packages/hooks/src/useLocalStorageState/index.ts @@ -1,6 +1,10 @@ import { createUseStorageState } from '../createUseStorageState'; import isBrowser from '../utils/isBrowser'; +/** + * A Hook that store state into localStorage. + * @see https://ahooks.js.org/hooks/use-local-storage-state + */ const useLocalStorageState = createUseStorageState(() => (isBrowser ? localStorage : undefined)); export default useLocalStorageState; From b7561c22c7d1c2e35dec6adff5d963cb37d58627 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:20:12 +0800 Subject: [PATCH 36/77] chore: add jsdoc --- packages/hooks/src/useLockFn/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useLockFn/index.ts b/packages/hooks/src/useLockFn/index.ts index 5ce96fba40..b9919dfede 100644 --- a/packages/hooks/src/useLockFn/index.ts +++ b/packages/hooks/src/useLockFn/index.ts @@ -1,5 +1,9 @@ import { useRef, useCallback } from 'react'; +/** + * Add lock to an async function to prevent parallel executions. + * @see https://ahooks.js.org/hooks/use-lock-fn + */ function useLockFn

(fn: (...args: P) => Promise) { const lockRef = useRef(false); From 85acff68d5ccf6a71531c34f7e0830dafaf56965 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:21:41 +0800 Subject: [PATCH 37/77] chore: add jsdoc --- packages/hooks/src/useLongPress/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useLongPress/index.ts b/packages/hooks/src/useLongPress/index.ts index df3f8be751..a21a1acd68 100644 --- a/packages/hooks/src/useLongPress/index.ts +++ b/packages/hooks/src/useLongPress/index.ts @@ -18,6 +18,10 @@ const touchSupported = // @ts-ignore ('ontouchstart' in window || (window.DocumentTouch && document instanceof DocumentTouch)); +/** + * Listen for the long press event of the target element. + * @see https://ahooks.js.org/hooks/use-long-press + */ function useLongPress( onLongPress: (event: EventType) => void, target: BasicTarget, From b804ae7cd474a2b65d8c9467ea8006867fd943fb Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:22:18 +0800 Subject: [PATCH 38/77] chore: add jsdoc --- packages/hooks/src/useMap/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useMap/index.ts b/packages/hooks/src/useMap/index.ts index 4f0407fb57..8ebf842a3a 100644 --- a/packages/hooks/src/useMap/index.ts +++ b/packages/hooks/src/useMap/index.ts @@ -1,6 +1,10 @@ import { useState } from 'react'; import useMemoizedFn from '../useMemoizedFn'; +/** + * A hook that can manage the state of Map. + * @see https://ahooks.js.org/hooks/use-map + */ function useMap(initialValue?: Iterable) { const getInitValue = () => new Map(initialValue); const [map, setMap] = useState>(getInitValue); From 28d5ba46813ea7ba903d719ac785c5e8b418bffb Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:25:47 +0800 Subject: [PATCH 39/77] chore: add jsdoc --- packages/hooks/src/useMemoizedFn/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useMemoizedFn/index.ts b/packages/hooks/src/useMemoizedFn/index.ts index fdd2d3cbc9..392ce9303b 100644 --- a/packages/hooks/src/useMemoizedFn/index.ts +++ b/packages/hooks/src/useMemoizedFn/index.ts @@ -9,6 +9,10 @@ type PickFunction = ( ...args: Parameters ) => ReturnType; +/** + * Hooks for persistent functions. + * @see https://ahooks.js.org/hooks/use-memoized-fn + */ function useMemoizedFn(fn: T) { if (isDev) { if (!isFunction(fn)) { From fdf57c3f0e784e22cc13b8511193d8ff846a7dea Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:26:27 +0800 Subject: [PATCH 40/77] chore: add jsdoc --- packages/hooks/src/useMount/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useMount/index.ts b/packages/hooks/src/useMount/index.ts index 1c437e2b59..372599a6cc 100644 --- a/packages/hooks/src/useMount/index.ts +++ b/packages/hooks/src/useMount/index.ts @@ -2,6 +2,10 @@ import { useEffect } from 'react'; import { isFunction } from '../utils'; import isDev from '../utils/isDev'; +/** + * A hook that executes a function after the component is mounted. + * @see https://ahooks.js.org/hooks/use-mount + */ const useMount = (fn: () => void) => { if (isDev) { if (!isFunction(fn)) { From 316a0f51248520fba4b23900c37513d640b3feb2 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:27:28 +0800 Subject: [PATCH 41/77] chore: add jsdoc --- packages/hooks/src/useMouse/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useMouse/index.ts b/packages/hooks/src/useMouse/index.ts index 6145383fa3..29e7af4473 100644 --- a/packages/hooks/src/useMouse/index.ts +++ b/packages/hooks/src/useMouse/index.ts @@ -33,6 +33,10 @@ const initState: CursorState = { elementPosY: NaN, }; +/** + * Track cursor position. + * @see https://ahooks.js.org/hooks/use-mouse + */ export default (target?: BasicTarget) => { const [state, setState] = useRafState(initState); From 5962d3215371989ad9d9c84db271019663736b71 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:28:29 +0800 Subject: [PATCH 42/77] chore: add jsdoc --- packages/hooks/src/useMutationObserver/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useMutationObserver/index.ts b/packages/hooks/src/useMutationObserver/index.ts index 182f24ec7a..75fe44d1e8 100644 --- a/packages/hooks/src/useMutationObserver/index.ts +++ b/packages/hooks/src/useMutationObserver/index.ts @@ -3,6 +3,10 @@ import type { BasicTarget } from '../utils/domTarget'; import useDeepCompareEffectWithTarget from '../utils/useDeepCompareWithTarget'; import useLatest from '../useLatest'; +/** + * A hook that provides the ability to watch for changes being made to the DOM tree, refer to [MutationObserver](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) + * @see https://ahooks.js.org/hooks/use-mutation-observer + */ const useMutationObserver = ( callback: MutationCallback, target: BasicTarget, From 72e96e420af9d8457e1804b475d60add78b0e665 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:29:02 +0800 Subject: [PATCH 43/77] chore: add jsdoc --- packages/hooks/src/useNetwork/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useNetwork/index.ts b/packages/hooks/src/useNetwork/index.ts index 665f2ee21c..cf9d59689b 100644 --- a/packages/hooks/src/useNetwork/index.ts +++ b/packages/hooks/src/useNetwork/index.ts @@ -37,6 +37,10 @@ function getConnectionProperty(): NetworkState { }; } +/** + * A hook that tracks the state of network connection. + * @see https://ahooks.js.org/hooks/use-network + */ function useNetwork(): NetworkState { const [state, setState] = useState(() => { return { From 7b3134843a2b2dfb875350c88189f584663db519 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:30:05 +0800 Subject: [PATCH 44/77] chore: add jsdoc --- packages/hooks/src/usePagination/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/usePagination/index.ts b/packages/hooks/src/usePagination/index.ts index 2e821931d2..4a9ddcaf99 100644 --- a/packages/hooks/src/usePagination/index.ts +++ b/packages/hooks/src/usePagination/index.ts @@ -4,6 +4,10 @@ import useRequest from '../useRequest'; import type { Data, PaginationOptions, Params, Service, PaginationResult } from './types'; +/** + * `usePagination` is implemented based on `useRequest` and encapsulates common paging logic. + * @see https://ahooks.js.org/hooks/use-pagination + */ const usePagination = ( service: Service, options: PaginationOptions = {}, From ed94a34ecf2997545e70554abc97d3fb8e118aea Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:30:28 +0800 Subject: [PATCH 45/77] chore: add jsdco --- packages/hooks/src/usePrevious/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/usePrevious/index.ts b/packages/hooks/src/usePrevious/index.ts index 7a9bb299ea..ce9311c1ee 100644 --- a/packages/hooks/src/usePrevious/index.ts +++ b/packages/hooks/src/usePrevious/index.ts @@ -4,6 +4,10 @@ export type ShouldUpdateFunc = (prev: T | undefined, next: T) => boolean; const defaultShouldUpdate = (a?: T, b?: T) => !Object.is(a, b); +/** + * A Hook to return the previous state. + * @see https://ahooks.js.org/hooks/use-previous + */ function usePrevious( state: T, shouldUpdate: ShouldUpdateFunc = defaultShouldUpdate, From 258d3b42296aa69c3827a63482ae48977bf9488a Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:32:22 +0800 Subject: [PATCH 46/77] chore: add jsdoc --- packages/hooks/src/useRafInterval/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useRafInterval/index.ts b/packages/hooks/src/useRafInterval/index.ts index ecdab92cfa..81e209337e 100644 --- a/packages/hooks/src/useRafInterval/index.ts +++ b/packages/hooks/src/useRafInterval/index.ts @@ -39,6 +39,10 @@ const clearRafInterval = function (handle: Handle) { cancelAnimationFrame(handle.id); }; +/** + * A hook implements with `requestAnimationFrame` for better performance. + * @see https://ahooks.js.org/hooks/use-raf-interval + */ function useRafInterval( fn: () => void, delay: number | undefined, From 4d72b332369658ac975820e27ae3bec98ef9aa4a Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:33:04 +0800 Subject: [PATCH 47/77] chore: add jsdoc --- packages/hooks/src/useRafState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useRafState/index.ts b/packages/hooks/src/useRafState/index.ts index b171dea10c..747aeff838 100644 --- a/packages/hooks/src/useRafState/index.ts +++ b/packages/hooks/src/useRafState/index.ts @@ -2,6 +2,10 @@ import { useCallback, useRef, useState } from 'react'; import type { Dispatch, SetStateAction } from 'react'; import useUnmount from '../useUnmount'; +/** + * Update the state in [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) callback, generally used for performance optimization. + * @see https://ahooks.js.org/hooks/use-raf-state + */ function useRafState(initialState: S | (() => S)): [S, Dispatch>]; function useRafState(): [S | undefined, Dispatch>]; From 97c75a8fe64b6c27c5714762033639f2c514f8c0 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:34:25 +0800 Subject: [PATCH 48/77] chore: add jsdoc --- packages/hooks/src/useRafInterval/index.ts | 2 +- packages/hooks/src/useRafTimeout/index.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/hooks/src/useRafInterval/index.ts b/packages/hooks/src/useRafInterval/index.ts index 81e209337e..5d0c213d16 100644 --- a/packages/hooks/src/useRafInterval/index.ts +++ b/packages/hooks/src/useRafInterval/index.ts @@ -40,7 +40,7 @@ const clearRafInterval = function (handle: Handle) { }; /** - * A hook implements with `requestAnimationFrame` for better performance. + * A hook implements with `requestAnimationFrame` for better performance. The API is consistent with `useInterval` * @see https://ahooks.js.org/hooks/use-raf-interval */ function useRafInterval( diff --git a/packages/hooks/src/useRafTimeout/index.ts b/packages/hooks/src/useRafTimeout/index.ts index a0a5cd3af4..67111b5026 100644 --- a/packages/hooks/src/useRafTimeout/index.ts +++ b/packages/hooks/src/useRafTimeout/index.ts @@ -42,6 +42,10 @@ const clearRafTimeout = function (handle: Handle) { cancelAnimationFrame(handle.id); }; +/** + * A hook implements with `requestAnimationFrame` for better performance. The API is consistent with `useTimeout`. + * @see https://ahooks.js.org/hooks/use-raf-timeout + */ function useRafTimeout(fn: () => void, delay: number | undefined) { const fnRef = useLatest(fn); const timerRef = useRef(); From f4db0cb70be61cad8d4918f9bed4e443b3fa6bac Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:36:01 +0800 Subject: [PATCH 49/77] chore: add jsdoc --- packages/hooks/src/useReactive/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useReactive/index.ts b/packages/hooks/src/useReactive/index.ts index ddeebd7045..9215be7560 100644 --- a/packages/hooks/src/useReactive/index.ts +++ b/packages/hooks/src/useReactive/index.ts @@ -54,6 +54,10 @@ function observer>(initialVal: T, cb: () => void): return proxy; } +/** + * It offers data reactivity when manipulating states and views, in which case `useState` is unnecessary for state definition. Modifying properties will automatically lead to view rerendering. + * @see https://ahooks.js.org/hooks/use-reactive + */ function useReactive>(initialState: S): S { const update = useUpdate(); const stateRef = useRef(initialState); From 4ec9598ed47dd73132110d0b2e7bb07398b96971 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:37:36 +0800 Subject: [PATCH 50/77] chore: add jsdoc --- packages/hooks/src/useRequest/src/useRequest.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useRequest/src/useRequest.ts b/packages/hooks/src/useRequest/src/useRequest.ts index 2bf43716d7..9f7477ed87 100644 --- a/packages/hooks/src/useRequest/src/useRequest.ts +++ b/packages/hooks/src/useRequest/src/useRequest.ts @@ -9,6 +9,10 @@ import useThrottlePlugin from './plugins/useThrottlePlugin'; import type { Options, Plugin, Service } from './types'; import useRequestImplement from './useRequestImplement'; +/** + * `useRequest` is a powerful Hooks for asynchronous data management. `useRequest` is sufficient enough for network request scenarios in React projects. + * @see https://ahooks.js.org/hooks/use-request + */ // function useRequest( // service: Service, // options: OptionsWithFormat, From 0274279d7eea832ff398fa7bbdacf9a29f5e1432 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:38:19 +0800 Subject: [PATCH 51/77] chore: update jsdoc --- packages/hooks/src/useAntdTable/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/hooks/src/useAntdTable/index.tsx b/packages/hooks/src/useAntdTable/index.tsx index 1cb54268f6..9b7642831b 100644 --- a/packages/hooks/src/useAntdTable/index.tsx +++ b/packages/hooks/src/useAntdTable/index.tsx @@ -13,7 +13,7 @@ import type { } from './types'; /** - * `useAntdTable` is implemented based on [useRequest](https://ahooks.js.org/hooks/use-request/index) and encapsulates the commonly used [Ant Design Form](https://ant.design/components/form/) and [Ant Design Table](https://ant.design/components/table/) data binding logic, and supports both antd v3 and v4. + * `useAntdTable` is implemented based on [useRequest](https://ahooks.js.org/hooks/use-request) and encapsulates the commonly used [Ant Design Form](https://ant.design/components/form/) and [Ant Design Table](https://ant.design/components/table/) data binding logic, and supports both antd v3 and v4. * @see https://ahooks.js.org/hooks/use-antd-table */ const useAntdTable = ( From 5c05b19c52856ffa488b3736398c1c67d49dd7d4 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:38:53 +0800 Subject: [PATCH 52/77] chore: add jsdoc --- packages/hooks/src/useResetState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useResetState/index.ts b/packages/hooks/src/useResetState/index.ts index bcff86c842..b49fc7a82a 100644 --- a/packages/hooks/src/useResetState/index.ts +++ b/packages/hooks/src/useResetState/index.ts @@ -4,6 +4,10 @@ import useMemoizedFn from '../useMemoizedFn'; type ResetState = () => void; +/** + * `useResetState` works similar to `React.useState`, it provides a `reset` method + * @see https://ahooks.js.org/hooks/use-reset-state + */ const useResetState = ( initialState: S | (() => S), ): [S, Dispatch>, ResetState] => { From 48652e7caf4fa288503c3a9d281ae5d2d7954317 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:39:24 +0800 Subject: [PATCH 53/77] chore: add jsdoc --- packages/hooks/src/useResponsive/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useResponsive/index.ts b/packages/hooks/src/useResponsive/index.ts index 406a161ff6..e269c497eb 100644 --- a/packages/hooks/src/useResponsive/index.ts +++ b/packages/hooks/src/useResponsive/index.ts @@ -49,6 +49,10 @@ export function configResponsive(config: ResponsiveConfig) { if (info) calculate(); } +/** + * React Hook for getting responsive info. + * @see https://ahooks.js.org/hooks/use-responsive + */ export function useResponsive() { if (isBrowser && !listening) { info = {}; From 447e971cca5d133ea3e122f13fe9e68f8ba2be4d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:42:18 +0800 Subject: [PATCH 54/77] chore: add jsdoc --- packages/hooks/src/useSafeState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useSafeState/index.ts b/packages/hooks/src/useSafeState/index.ts index cc04af3e4f..16cecd2681 100644 --- a/packages/hooks/src/useSafeState/index.ts +++ b/packages/hooks/src/useSafeState/index.ts @@ -2,6 +2,10 @@ import { useCallback, useState } from 'react'; import type { Dispatch, SetStateAction } from 'react'; import useUnmountedRef from '../useUnmountedRef'; +/** + * It is exactly the same with `React.useState` , but after the component is unmounted, the `setState` in the asynchronous callback will no longer be executed to avoid memory leakage caused by updating the state after the component is unmounted. + * @see https://ahooks.js.org/hooks/use-safe-state + */ function useSafeState(initialState: S | (() => S)): [S, Dispatch>]; function useSafeState(): [S | undefined, Dispatch>]; From 77d54667c03eb0e20bd1f2f382114b028ef6fa2d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:42:59 +0800 Subject: [PATCH 55/77] chore: add jsdoc --- packages/hooks/src/useScroll/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useScroll/index.ts b/packages/hooks/src/useScroll/index.ts index 4df029f113..430fbf5426 100644 --- a/packages/hooks/src/useScroll/index.ts +++ b/packages/hooks/src/useScroll/index.ts @@ -9,6 +9,10 @@ type Position = { left: number; top: number }; export type Target = BasicTarget; export type ScrollListenController = (val: Position) => boolean; +/** + * Get the scroll position of an element. + * @see https://ahooks.js.org/hooks/use-scroll + */ function useScroll( target?: Target, shouldUpdate: ScrollListenController = () => true, From fb8c81f918292ad37a37961626053b0baabeb4e9 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:43:24 +0800 Subject: [PATCH 56/77] chore: add jsdoc --- packages/hooks/src/useSelections/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useSelections/index.ts b/packages/hooks/src/useSelections/index.ts index e9b5b4e9a5..87f6ee2006 100644 --- a/packages/hooks/src/useSelections/index.ts +++ b/packages/hooks/src/useSelections/index.ts @@ -1,6 +1,10 @@ import { useMemo, useState } from 'react'; import useMemoizedFn from '../useMemoizedFn'; +/** + * This hook is used for Checkbox group, supports multiple selection, single selection, select-all, select-none and semi-selected etc. + * @see https://ahooks.js.org/hooks/use-selections + */ export default function useSelections(items: T[], defaultSelected: T[] = []) { const [selected, setSelected] = useState(defaultSelected); From 8842335de86bf06e5e249fe265649042e816c0c5 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:44:29 +0800 Subject: [PATCH 57/77] chore: add jsdoc --- packages/hooks/src/useSessionStorageState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useSessionStorageState/index.ts b/packages/hooks/src/useSessionStorageState/index.ts index c5970fe526..ae0a62e7cf 100644 --- a/packages/hooks/src/useSessionStorageState/index.ts +++ b/packages/hooks/src/useSessionStorageState/index.ts @@ -1,6 +1,10 @@ import { createUseStorageState } from '../createUseStorageState'; import isBrowser from '../utils/isBrowser'; +/** + * A Hook for store state into sessionStorage. + * @see https://ahooks.js.org/hooks/use-session-storage-state + */ const useSessionStorageState = createUseStorageState(() => isBrowser ? sessionStorage : undefined, ); From e64a76fa5430246175453d88487a6a60cb7e5b25 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:46:23 +0800 Subject: [PATCH 58/77] chore: add jsdoc --- packages/hooks/src/useSet/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useSet/index.ts b/packages/hooks/src/useSet/index.ts index 59f18debcb..5263280f6c 100644 --- a/packages/hooks/src/useSet/index.ts +++ b/packages/hooks/src/useSet/index.ts @@ -1,6 +1,10 @@ import { useState } from 'react'; import useMemoizedFn from '../useMemoizedFn'; +/** + * A hook that can manage the state of Set. + * @see https://ahooks.js.org/hooks/use-set + */ function useSet(initialValue?: Iterable) { const getInitValue = () => new Set(initialValue); const [set, setSet] = useState>(getInitValue); From dc09e90890805c8e294e38b12a4d8f93b5aa3445 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:50:57 +0800 Subject: [PATCH 59/77] chore: add jsdoc --- packages/hooks/src/useSetState/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useSetState/index.ts b/packages/hooks/src/useSetState/index.ts index 495bcfd243..776261a43d 100644 --- a/packages/hooks/src/useSetState/index.ts +++ b/packages/hooks/src/useSetState/index.ts @@ -5,6 +5,10 @@ export type SetState> = ( state: Pick | null | ((prevState: Readonly) => Pick | S | null), ) => void; +/** + * useSetState works similar to `this.setState` of class component, used to manage the state of object type. + * @see https://ahooks.js.org/hooks/use-set-state + */ const useSetState = >( initialState: S | (() => S), ): [S, SetState] => { From 04e6e8c93aebaef1ad636bb3cdc1890d4a379761 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:51:59 +0800 Subject: [PATCH 60/77] chore: add jsdoc --- packages/hooks/src/useSize/index.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/hooks/src/useSize/index.ts b/packages/hooks/src/useSize/index.ts index 20a3de66a5..45f6115c1c 100644 --- a/packages/hooks/src/useSize/index.ts +++ b/packages/hooks/src/useSize/index.ts @@ -6,13 +6,15 @@ import useIsomorphicLayoutEffectWithTarget from '../utils/useIsomorphicLayoutEff type Size = { width: number; height: number }; +/** + * A hook that observes size change of an element. + * @see https://ahooks.js.org/hooks/use-size + */ function useSize(target: BasicTarget): Size | undefined { - const [state, setState] = useRafState( - () => { - const el = getTargetElement(target); - return el ? { width: el.clientWidth, height: el.clientHeight } : undefined - }, - ); + const [state, setState] = useRafState(() => { + const el = getTargetElement(target); + return el ? { width: el.clientWidth, height: el.clientHeight } : undefined; + }); useIsomorphicLayoutEffectWithTarget( () => { From 938c8f271394b1da27e277369fd87a4f9a5a510e Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:53:42 +0800 Subject: [PATCH 61/77] chore: add jsdoc --- packages/hooks/src/useTextSelection/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useTextSelection/index.ts b/packages/hooks/src/useTextSelection/index.ts index a2fd895689..a63843c850 100644 --- a/packages/hooks/src/useTextSelection/index.ts +++ b/packages/hooks/src/useTextSelection/index.ts @@ -49,6 +49,10 @@ function getRectFromSelection(selection: Selection | null): Rect { }; } +/** + * Tracking content, size, position of user text selection. + * @see https://ahooks.js.org/hooks/use-text-selection + */ function useTextSelection(target?: BasicTarget): State { const [state, setState] = useState(initState); From 7991086e4a2632fc2be038cbf4357d97f1f62f49 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:54:23 +0800 Subject: [PATCH 62/77] chore: add jsdoc --- packages/hooks/src/useThrottle/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useThrottle/index.ts b/packages/hooks/src/useThrottle/index.ts index 07d960d20d..1d149c06b3 100644 --- a/packages/hooks/src/useThrottle/index.ts +++ b/packages/hooks/src/useThrottle/index.ts @@ -2,6 +2,10 @@ import { useEffect, useState } from 'react'; import useThrottleFn from '../useThrottleFn'; import type { ThrottleOptions } from './throttleOptions'; +/** + * A hook that deal with the throttled value. + * @see https://ahooks.js.org/hooks/use-throttle + */ function useThrottle(value: T, options?: ThrottleOptions) { const [throttled, setThrottled] = useState(value); From e0450b0d2eb797670afd3d124c4ba2bfacdc3e5f Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:55:01 +0800 Subject: [PATCH 63/77] chore: add jsdoc --- packages/hooks/src/useThrottleEffect/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useThrottleEffect/index.ts b/packages/hooks/src/useThrottleEffect/index.ts index e0e52ba67d..ed876bb345 100644 --- a/packages/hooks/src/useThrottleEffect/index.ts +++ b/packages/hooks/src/useThrottleEffect/index.ts @@ -4,6 +4,10 @@ import type { ThrottleOptions } from '../useThrottle/throttleOptions'; import useThrottleFn from '../useThrottleFn'; import useUpdateEffect from '../useUpdateEffect'; +/** + * Throttle your `useEffect`. + * @see https://ahooks.js.org/hooks/use-throttle-effect + */ function useThrottleEffect( effect: EffectCallback, deps?: DependencyList, From a8518b0e476868078b3f7a66c5ddbd47d870995e Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:56:14 +0800 Subject: [PATCH 64/77] chore: add jsdoc --- packages/hooks/src/useThrottleFn/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useThrottleFn/index.ts b/packages/hooks/src/useThrottleFn/index.ts index 00192b86d5..6828f207cd 100644 --- a/packages/hooks/src/useThrottleFn/index.ts +++ b/packages/hooks/src/useThrottleFn/index.ts @@ -8,6 +8,10 @@ import isDev from '../utils/isDev'; type noop = (...args: any[]) => any; +/** + * A hook that deal with the throttled function. + * @see https://ahooks.js.org/hooks/use-throttle-fn + */ function useThrottleFn(fn: T, options?: ThrottleOptions) { if (isDev) { if (!isFunction(fn)) { From aa6f772d0b790e7508ce27547b0b55bd75682dee Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:56:45 +0800 Subject: [PATCH 65/77] chore: add jsdoc --- packages/hooks/src/useTimeout/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useTimeout/index.ts b/packages/hooks/src/useTimeout/index.ts index 7285fdb06e..8e8fa76713 100644 --- a/packages/hooks/src/useTimeout/index.ts +++ b/packages/hooks/src/useTimeout/index.ts @@ -2,6 +2,10 @@ import { useCallback, useEffect, useRef } from 'react'; import useMemoizedFn from '../useMemoizedFn'; import { isNumber } from '../utils'; +/** + * A hook that handles the `setTimeout` timer function. + * @see https://ahooks.js.org/hooks/use-timeout + */ const useTimeout = (fn: () => void, delay?: number) => { const timerCallback = useMemoizedFn(fn); const timerRef = useRef(null); From 4fc18953dd8416b3d593fb7e888362707d10692d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 20:57:25 +0800 Subject: [PATCH 66/77] chore: add jsdoc --- packages/hooks/src/useTitle/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useTitle/index.ts b/packages/hooks/src/useTitle/index.ts index ce38c7b1b2..96ccbb9bf8 100644 --- a/packages/hooks/src/useTitle/index.ts +++ b/packages/hooks/src/useTitle/index.ts @@ -10,6 +10,10 @@ const DEFAULT_OPTIONS: Options = { restoreOnUnmount: false, }; +/** + * A hook that set title of the page. + * @see https://ahooks.js.org/hooks/use-title + */ function useTitle(title: string, options: Options = DEFAULT_OPTIONS) { const titleRef = useRef(isBrowser ? document.title : ''); useEffect(() => { From 852106fffbb054d9fb2d9c21b0cb5e4672cb4f2e Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:00:22 +0800 Subject: [PATCH 67/77] chore: add jsdoc --- packages/hooks/src/useToggle/index.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/hooks/src/useToggle/index.ts b/packages/hooks/src/useToggle/index.ts index 3a9c30217f..395cb344c0 100644 --- a/packages/hooks/src/useToggle/index.ts +++ b/packages/hooks/src/useToggle/index.ts @@ -7,6 +7,17 @@ export interface Actions { toggle: () => void; } +/** + * A hook that toggle states. + * @see https://ahooks.js.org/hooks/use-toggle + * @example + * ```js + * // Default value is boolean,alike useBoolean. + * const [state, { toggle, setLeft, setRight }] = useToggle(); + * // Toggle between any two values + * const [state, { toggle, setLeft, setRight }] = useToggle('Hello', 'World'); + * ``` + */ function useToggle(): [boolean, Actions]; function useToggle(defaultValue: T): [T, Actions]; From 63e3454029b063857105c6795e62b4e7ad93331c Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:01:59 +0800 Subject: [PATCH 68/77] chore: add jsdoc --- packages/hooks/src/useTrackedEffect/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useTrackedEffect/index.ts b/packages/hooks/src/useTrackedEffect/index.ts index f3cf7305d0..17cc3da732 100644 --- a/packages/hooks/src/useTrackedEffect/index.ts +++ b/packages/hooks/src/useTrackedEffect/index.ts @@ -20,6 +20,10 @@ const diffTwoDeps = (deps1?: DependencyList, deps2?: DependencyList) => { : []; }; +/** + * A hook of useEffect that allow us to track which dependencies caused the effect to trigger. + * @see https://ahooks.js.org/hooks/use-tracked-effect + */ const useTrackedEffect = (effect: Effect, deps?: [...T]) => { const previousDepsRef = useRef(); From 841e667b601b824ce8e3bd3ecce373e887d1df48 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:08:19 +0800 Subject: [PATCH 69/77] chore: add jsdoc --- packages/hooks/src/useUnmount/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useUnmount/index.ts b/packages/hooks/src/useUnmount/index.ts index 1e6bb05ae2..db4417ba18 100644 --- a/packages/hooks/src/useUnmount/index.ts +++ b/packages/hooks/src/useUnmount/index.ts @@ -3,6 +3,10 @@ import useLatest from '../useLatest'; import { isFunction } from '../utils'; import isDev from '../utils/isDev'; +/** + * A hook that executes the function right before the component is unmounted. + * @see https://ahooks.js.org/hooks/use-unmount + */ const useUnmount = (fn: () => void) => { if (isDev) { if (!isFunction(fn)) { From 22867b2ef83ea62f57289d52eaf856da3ed720fb Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:08:49 +0800 Subject: [PATCH 70/77] chore: add jsdoc --- packages/hooks/src/useUnmountedRef/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useUnmountedRef/index.tsx b/packages/hooks/src/useUnmountedRef/index.tsx index 540786bf78..ffbf709edb 100644 --- a/packages/hooks/src/useUnmountedRef/index.tsx +++ b/packages/hooks/src/useUnmountedRef/index.tsx @@ -1,5 +1,9 @@ import { useEffect, useRef } from 'react'; +/** + * A Hook can be used to get whether the component is unmounted. + * @see https://ahooks.js.org/hooks/lifecycle/use-unmounted-ref + */ const useUnmountedRef = () => { const unmountedRef = useRef(false); useEffect(() => { From 528d3957677a143e0b84f9745b757565ad97729f Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:09:19 +0800 Subject: [PATCH 71/77] chore: add jsdoc --- packages/hooks/src/useUpdate/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useUpdate/index.ts b/packages/hooks/src/useUpdate/index.ts index 34c6910fcf..06f20d0c0e 100644 --- a/packages/hooks/src/useUpdate/index.ts +++ b/packages/hooks/src/useUpdate/index.ts @@ -1,5 +1,9 @@ import { useCallback, useState } from 'react'; +/** + * A hook that returns a function which can be used to force the component to re-render. + * @see https://ahooks.js.org/hooks/use-update + */ const useUpdate = () => { const [, setState] = useState({}); From 292c9f0a63977d406ff50344b9202876b6dff1af Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:09:47 +0800 Subject: [PATCH 72/77] chore: add jsdoc --- packages/hooks/src/useUpdateEffect/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useUpdateEffect/index.ts b/packages/hooks/src/useUpdateEffect/index.ts index 5117ca5c5d..d4c1cccda2 100644 --- a/packages/hooks/src/useUpdateEffect/index.ts +++ b/packages/hooks/src/useUpdateEffect/index.ts @@ -1,4 +1,8 @@ import { useEffect } from 'react'; import { createUpdateEffect } from '../createUpdateEffect'; +/** + * A hook alike `useEffect` but skips running the effect for the first time. + * @see https://ahooks.js.org/hooks/use-update-effect + */ export default createUpdateEffect(useEffect); From 9f822c30c9b756a0a08fe27efcaa33fa24ff0db0 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:10:44 +0800 Subject: [PATCH 73/77] chore: add jsdoc --- packages/hooks/src/useUpdateLayoutEffect/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useUpdateLayoutEffect/index.ts b/packages/hooks/src/useUpdateLayoutEffect/index.ts index a64214855b..5dbadbc146 100644 --- a/packages/hooks/src/useUpdateLayoutEffect/index.ts +++ b/packages/hooks/src/useUpdateLayoutEffect/index.ts @@ -1,4 +1,8 @@ import { useLayoutEffect } from 'react'; import { createUpdateEffect } from '../createUpdateEffect'; +/** + * A hook alike `useLayoutEffect` but skips running the effect for the first time. + * @see https://ahooks.js.org/hooks/use-update-layout-effect + */ export default createUpdateEffect(useLayoutEffect); From acc013ebc0039506b50db17124e2d09adac8417d Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:16:13 +0800 Subject: [PATCH 74/77] chore: add jsdoc --- packages/hooks/src/useVirtualList/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useVirtualList/index.ts b/packages/hooks/src/useVirtualList/index.ts index 65e069f6d0..c9f6b283ca 100644 --- a/packages/hooks/src/useVirtualList/index.ts +++ b/packages/hooks/src/useVirtualList/index.ts @@ -18,6 +18,10 @@ export interface Options { overscan?: number; } +/** + * A hook that allows you to use virtual list to render huge chunks of list data. + * @see https://ahooks.js.org/hooks/use-virtual-list + */ const useVirtualList = (list: T[], options: Options) => { const { containerTarget, wrapperTarget, itemHeight, overscan = 5 } = options; From bc674c92f05b2463481f57ee4a1a0049a4afaa80 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:17:53 +0800 Subject: [PATCH 75/77] chore: add jsdoc --- packages/hooks/src/useWebSocket/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useWebSocket/index.ts b/packages/hooks/src/useWebSocket/index.ts index 8260195133..a266079dca 100644 --- a/packages/hooks/src/useWebSocket/index.ts +++ b/packages/hooks/src/useWebSocket/index.ts @@ -31,6 +31,10 @@ export interface Result { webSocketIns?: WebSocket; } +/** + * A hook for WebSocket. + * @see https://ahooks.js.org/hooks/web-socket + */ export default function useWebSocket(socketUrl: string, options: Options = {}): Result { const { reconnectLimit = 3, From b6ae8f95cdb8f4275ba34622fe2eedfc3da8ccd7 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:18:41 +0800 Subject: [PATCH 76/77] chore: add jsdoc --- packages/hooks/src/useWhyDidYouUpdate/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hooks/src/useWhyDidYouUpdate/index.ts b/packages/hooks/src/useWhyDidYouUpdate/index.ts index 197f0ddc83..2888519f64 100644 --- a/packages/hooks/src/useWhyDidYouUpdate/index.ts +++ b/packages/hooks/src/useWhyDidYouUpdate/index.ts @@ -2,6 +2,10 @@ import { useEffect, useRef } from 'react'; export type IProps = Record; +/** + * Help developers troubleshoot what changes have caused component rerender. + * @see https://ahooks.js.org/hooks/use-why-did-you-update + */ export default function useWhyDidYouUpdate(componentName: string, props: IProps) { const prevProps = useRef({}); From e2a9186dde6206b2c84a060f9a0d841a9402ba68 Mon Sep 17 00:00:00 2001 From: wuxh Date: Sun, 17 Dec 2023 21:32:34 +0800 Subject: [PATCH 77/77] chore: revert diff --- packages/hooks/src/useSize/index.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/hooks/src/useSize/index.ts b/packages/hooks/src/useSize/index.ts index 45f6115c1c..b943db0a4f 100644 --- a/packages/hooks/src/useSize/index.ts +++ b/packages/hooks/src/useSize/index.ts @@ -11,10 +11,12 @@ type Size = { width: number; height: number }; * @see https://ahooks.js.org/hooks/use-size */ function useSize(target: BasicTarget): Size | undefined { - const [state, setState] = useRafState(() => { - const el = getTargetElement(target); - return el ? { width: el.clientWidth, height: el.clientHeight } : undefined; - }); + const [state, setState] = useRafState( + () => { + const el = getTargetElement(target); + return el ? { width: el.clientWidth, height: el.clientHeight } : undefined + }, + ); useIsomorphicLayoutEffectWithTarget( () => {