useUnmount.js 763 B

12345678910111213141516171819202122232425262728
  1. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  2. import * as React from 'react';
  3. import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
  4. /**
  5. * Trigger only when component unmount
  6. */
  7. function useUnmount(triggerStart, triggerEnd) {
  8. var _React$useState = React.useState(false),
  9. _React$useState2 = _slicedToArray(_React$useState, 2),
  10. firstMount = _React$useState2[0],
  11. setFirstMount = _React$useState2[1];
  12. useLayoutEffect(function () {
  13. if (firstMount) {
  14. triggerStart();
  15. return function () {
  16. triggerEnd();
  17. };
  18. }
  19. }, [firstMount]);
  20. useLayoutEffect(function () {
  21. setFirstMount(true);
  22. return function () {
  23. setFirstMount(false);
  24. };
  25. }, []);
  26. }
  27. export default useUnmount;