usePatchElement.js 1.0 KB

1234567891011121314151617181920212223
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = usePatchElement;
  8. var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
  9. var React = _interopRequireWildcard(require("react"));
  10. function usePatchElement() {
  11. const [elements, setElements] = React.useState([]);
  12. const patchElement = React.useCallback(element => {
  13. // append a new element to elements (and create a new ref)
  14. setElements(originElements => [].concat((0, _toConsumableArray2.default)(originElements), [element]));
  15. // return a function that removes the new element out of elements (and create a new ref)
  16. // it works a little like useEffect
  17. return () => {
  18. setElements(originElements => originElements.filter(ele => ele !== element));
  19. };
  20. }, []);
  21. return [elements, patchElement];
  22. }