21 lines
579 B
JavaScript
21 lines
579 B
JavaScript
'use client';
|
|
|
|
import * as React from 'react';
|
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
import reactMajor from '@mui/x-internals/reactMajor';
|
|
export default function useRefCallback(fn) {
|
|
const refCleanup = React.useRef(undefined);
|
|
const refCallback = useEventCallback(node => {
|
|
if (!node) {
|
|
// Cleanup for R18
|
|
refCleanup.current?.();
|
|
return;
|
|
}
|
|
refCleanup.current = fn(node);
|
|
if (reactMajor >= 19) {
|
|
/* eslint-disable-next-line consistent-return */
|
|
return refCleanup.current;
|
|
}
|
|
});
|
|
return refCallback;
|
|
} |