UNPKG

luna-data-grid

Version:

Grid for displaying datasets

47 lines (46 loc) 1.3 kB
import { useEffect, useRef, useState, } from 'react'; export function useForceUpdate() { const [_, setForceUpdateValue] = useState(0); return () => setForceUpdateValue((value) => value + 1); } export function usePrevious(value) { const ref = useRef(); useEffect(() => { ref.current = value; }); return ref.current; } export function useNonInitialEffect(effect, deps) { const initialRender = useRef(true); useEffect(() => { let effectReturns = () => { }; if (initialRender.current) { initialRender.current = false; } else { effectReturns = effect(); } if (effectReturns && typeof effectReturns === 'function') { return effectReturns; } }, deps); } export function useEvent(component, event, prev, prop) { useEffect(() => { if (component.current) { if (prev) { component.current.off(event, prev); } if (prop) { component.current.on(event, prop); } } }, [prop]); } export function useOption(component, key, prop) { useNonInitialEffect(() => { if (component.current) { component.current.setOption(key, prop); } }, [prop]); }