33 lines
1004 B
JavaScript
33 lines
1004 B
JavaScript
import React from 'react';
|
|
|
|
import createChainableTypeChecker from './utils/createChainableTypeChecker';
|
|
|
|
function validate(props, propName, componentName, location, propFullName) {
|
|
const propValue = props[propName];
|
|
const propType = typeof propValue;
|
|
|
|
if (React.isValidElement(propValue)) {
|
|
return new Error(
|
|
`Invalid ${location} \`${propFullName}\` of type ReactElement ` +
|
|
`supplied to \`${componentName}\`, expected a ReactComponent or a ` +
|
|
'DOMElement. You can usually obtain a ReactComponent or DOMElement ' +
|
|
'from a ReactElement by attaching a ref to it.'
|
|
);
|
|
}
|
|
|
|
if (
|
|
(propType !== 'object' || typeof propValue.render !== 'function') &&
|
|
propValue.nodeType !== 1
|
|
) {
|
|
return new Error(
|
|
`Invalid ${location} \`${propFullName}\` of value \`${propValue}\` ` +
|
|
`supplied to \`${componentName}\`, expected a ReactComponent or a ` +
|
|
'DOMElement.'
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
export default createChainableTypeChecker(validate);
|