createRef.js 551 B

1234567891011121314151617181920212223
  1. /**
  2. * creates a Ref object with on change callback
  3. * @param callback
  4. * @returns {RefObject}
  5. *
  6. * @see {@link useCallbackRef}
  7. * @see https://reactjs.org/docs/refs-and-the-dom.html#creating-refs
  8. */
  9. export function createCallbackRef(callback) {
  10. let current = null;
  11. return {
  12. get current() {
  13. return current;
  14. },
  15. set current(value) {
  16. const last = current;
  17. if (last !== value) {
  18. current = value;
  19. callback(value, last);
  20. }
  21. },
  22. };
  23. }