useSyncState.js 680 B

12345678910111213141516171819
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = useSyncState;
  8. var React = _interopRequireWildcard(require("react"));
  9. var _useForceUpdate = _interopRequireDefault(require("./useForceUpdate"));
  10. function useSyncState(initialValue) {
  11. const ref = React.useRef(initialValue);
  12. const forceUpdate = (0, _useForceUpdate.default)();
  13. return [() => ref.current, newValue => {
  14. ref.current = newValue;
  15. // re-render
  16. forceUpdate();
  17. }];
  18. }