Add utils - Methods to check if a node corresponds to functional or class components

This commit is contained in:
2019-07-24 02:28:13 +05:30
parent 99d808c9b8
commit 7b51c96a57
+11 -2
View File
@@ -1,4 +1,5 @@
import { FiberNode, FiberNodeisHTMLLike } from './mocked-types';
import * as React from 'react';
import { FiberNode, FiberNodeisHTMLLike, FiberNodeForFunctionComponent, FiberNodeForComponentClass } from './mocked-types';
function isNodeHtmlLike(node: FiberNode): node is FiberNodeisHTMLLike {
return (typeof node.type === "string") || node.type === null;
@@ -8,4 +9,12 @@ function isNodeNotHtmlLike(node: FiberNode): node is Exclude<FiberNode, FiberNod
return !isNodeHtmlLike(node);
}
export { isNodeHtmlLike, isNodeNotHtmlLike };
function isNodeFunctionComponent(node: FiberNode): node is FiberNodeForFunctionComponent {
return isNodeNotHtmlLike(node) && node.stateNode === null;
}
function isNodeComponentClass(node: FiberNode): node is FiberNodeForComponentClass {
return isNodeNotHtmlLike(node) && (node.stateNode instanceof React.Component);
}
export { isNodeHtmlLike, isNodeNotHtmlLike, isNodeFunctionComponent, isNodeComponentClass };