UNPKG

use-hook-kits

Version:

![npm](https://img.shields.io/npm/dt/use-hook-kits.svg) ![npm](https://img.shields.io/npm/v/use-hook-kits.svg) ![NpmLicense](https://img.shields.io/npm/l/use-hook-kits.svg)

27 lines (24 loc) 903 B
import { useState, useRef } from 'react'; import useDidMount from './useDidMount'; import useDeepEffect from './useDeepEffect'; const useDidUpdate = (factory, conditions) => { const [hasMounted, setHasMounted] = useState(false); const isUnMount = useRef(false); if (typeof conditions !== "undefined" && !Array.isArray(conditions)) { conditions = [conditions]; } else if (Array.isArray(conditions) && conditions.length === 0) { console.warn( "Using [] as the second argument makes useDidUpdate a noop. The second argument should either be `undefined` or an array of length greater than 0." ); } useDidMount(() => { setHasMounted(true); return () => isUnMount.current = true }); useDeepEffect(() => { if (hasMounted && !isUnMount.current) { factory(); } }, conditions); } export default useDidUpdate;