You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13 lines
908 B
13 lines
908 B
import invariant from 'invariant';
|
|
import { useCallback } from 'react';
|
|
import useMergedRefs from '@restart/hooks/useMergedRefs';
|
|
export default function useWrappedRefWithWarning(ref, componentName) {
|
|
// @ts-ignore
|
|
if (!(process.env.NODE_ENV !== "production")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
|
|
const warningRef = useCallback(refValue => {
|
|
!(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== "production" ? invariant(false, `${componentName} injected a ref to a provided \`as\` component that resolved to a component instance instead of a DOM element. ` + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;
|
|
}, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
|
|
return useMergedRefs(warningRef, ref);
|
|
} |