This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useRef } from 'react'; | |
| export function useScope<T>(values: T): T { | |
| return Object.assign(useRef({} as T).current, values); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useMemo } from 'react'; | |
| export const useConst = <T>(initialStateGetter: () => T) => { | |
| return useMemo(initialStateGetter, []); | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useMemo, useRef } from 'react'; | |
| import { useScope } from './useScope'; | |
| export type UseDebouncerCallback = (...args: any[]) => void; | |
| export const useDebouncer = <T extends UseDebouncerCallback>( | |
| callback: T, | |
| delay: number, | |
| runFirst?: boolean | |
| ): T & { clear: () => void } => { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { DependencyList, useEffect } from 'react'; | |
| export type AsyncDestructor = () => void; | |
| export type SetDestructor = (setDestructor: AsyncDestructor) => void; | |
| export type EffectAsyncCallback = (destructor: SetDestructor) => Promise<void>; | |
| export const useEffectAsync = (asyncEffect: EffectAsyncCallback, deps: DependencyList) => { | |
| useEffect(() => { | |
| let destructor: AsyncDestructor = () => {}; | |
| asyncEffect(newDestructor => (destructor = newDestructor)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { DependencyList, EffectCallback, useRef } from 'react'; | |
| import { useOnComponentUnmount } from './useOnComponentUnmount'; | |
| const arrayMatch = (arr1?: DependencyList, arr2?: DependencyList) => { | |
| if (!arr1 || !arr2) return false; | |
| if (arr1.length !== arr2.length) return false; | |
| return arr1.every((_, i) => arr1[i] === arr2[i]); | |
| }; | |
| export const useImmediateEffect = (effect: EffectCallback, deps?: DependencyList) => { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useMemo } from 'react'; | |
| export function useMemoDeps<R, D1, D2, D3, D4, D5, D6, D7, D8>( | |
| factory: (...deps: [D1, D2, D3, D4, D5, D6, D7, D8]) => R, | |
| deps: [D1, D2, D3, D4, D5, D6, D7, D8] | |
| ): R; | |
| export function useMemoDeps<R, D1, D2, D3, D4, D5, D6, D7>( | |
| factory: (...deps: [D1, D2, D3, D4, D5, D6, D7]) => R, | |
| deps: [D1, D2, D3, D4, D5, D6, D7] | |
| ): R; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useRef } from 'react'; | |
| export const useObject = <T extends Record<string, any | unknown>>(obj: T | undefined): T => { | |
| const safeObj = (obj || {}) as T; | |
| const cached = useRef(safeObj); | |
| const { current } = cached; | |
| if (current === safeObj) return safeObj; | |
| const keys = Object.keys({ ...current, ...safeObj }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { EffectCallback, useEffect } from 'react'; | |
| export const useOnComponentMount = (onMountFn: EffectCallback) => { | |
| useEffect(() => onMountFn(), []); | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { EffectAsyncCallback, useEffectAsync } from './useEffectAsync'; | |
| export const useOnComponentMountAsync = (asyncEffect: EffectAsyncCallback) => { | |
| useEffectAsync(asyncEffect, []); | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useEffect } from 'react'; | |
| export const useOnComponentUnmount = (onUnmountFn: () => void) => { | |
| useEffect(() => () => onUnmountFn(), []); | |
| }; |
OlderNewer