UNPKG

917 BJavaScriptView Raw
1import * as React from 'react';
2import canUseDom from "../Dom/canUseDom";
3
4/**
5 * Wrap `React.useLayoutEffect` which will not throw warning message in test env
6 */
7var useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;
8var useLayoutEffect = function useLayoutEffect(callback, deps) {
9 var firstMountRef = React.useRef(true);
10 useInternalLayoutEffect(function () {
11 return callback(firstMountRef.current);
12 }, deps);
13
14 // We tell react that first mount has passed
15 useInternalLayoutEffect(function () {
16 firstMountRef.current = false;
17 return function () {
18 firstMountRef.current = true;
19 };
20 }, []);
21};
22export var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {
23 useLayoutEffect(function (firstMount) {
24 if (!firstMount) {
25 return callback();
26 }
27 }, deps);
28};
29export default useLayoutEffect;
\No newline at end of file