diff --git a/src/parser/parseReactElement.js b/src/parser/parseReactElement.js index 773b1a98d..c092cf9da 100644 --- a/src/parser/parseReactElement.js +++ b/src/parser/parseReactElement.js @@ -13,6 +13,7 @@ import type { TreeNode } from './../tree'; const supportFragment = Boolean(Fragment); const getReactElementDisplayName = (element: ReactElement<*>): string => + (element.type.render && element.type.render.name) || element.type.displayName || (element.type.name !== '_default' ? element.type.name : null) || // function name (typeof element.type === 'function' // function without a name, you should provide one diff --git a/src/parser/parseReactElement.spec.js b/src/parser/parseReactElement.spec.js index a30188849..08ae1c95b 100644 --- a/src/parser/parseReactElement.spec.js +++ b/src/parser/parseReactElement.spec.js @@ -182,4 +182,19 @@ describe('parseReactElement', () => { ], }); }); + + it(`should parse a component encapsulated in a forward ref`, () => { + const B = React.forwardRef(function B(props, ref) { + return
hey
; + }); + expect(parseReactElement(, options)).toEqual({ + type: 'ReactElement', + displayName: 'B', + defaultProps: {}, + props: { + foo: '41', + }, + childrens: [], + }); + }); });