useEffectState.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = useEffectState;
  7. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  8. var _react = require("react");
  9. /**
  10. * Trigger a callback on state change
  11. */
  12. function useEffectState() {
  13. var _useState = (0, _react.useState)({
  14. id: 0,
  15. callback: null
  16. }),
  17. _useState2 = (0, _slicedToArray2.default)(_useState, 2),
  18. effectId = _useState2[0],
  19. setEffectId = _useState2[1];
  20. var update = (0, _react.useCallback)(function (callback) {
  21. setEffectId(function (_ref) {
  22. var id = _ref.id;
  23. return {
  24. id: id + 1,
  25. callback: callback
  26. };
  27. });
  28. }, []);
  29. (0, _react.useEffect)(function () {
  30. var _effectId$callback;
  31. (_effectId$callback = effectId.callback) === null || _effectId$callback === void 0 || _effectId$callback.call(effectId);
  32. }, [effectId]);
  33. return update;
  34. }