Skip to content

Commit 9169ac7

Browse files
committed
fix(tagName): fixed an edge-case with decorated component name
When decorating components the resulting tagName was `[object Object]`
1 parent cddec35 commit 9169ac7

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

index-test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import React from 'react';
44
import expect from 'expect';
5+
import {createRenderer} from 'react-addons-test-utils';
56
import reactElementToJSXString from './index';
67

78
class TestComponent extends React.Component {}
@@ -254,4 +255,29 @@ describe(`reactElementToJSXString(ReactElement)`, () => {
254255
reactElementToJSXString(<div a={[<div><span /></div>]} />)
255256
).toEqual(`<div a={[<div><span /></div>]} />`);
256257
});
258+
259+
it(`reactElementToJSXString(decorator(<span />)`, () => {
260+
function myDecorator(ComposedComponent) {
261+
class MyDecorator extends React.Component {
262+
render() {
263+
return (
264+
<div>
265+
<ComposedComponent {...this.props} />
266+
</div>
267+
);
268+
}
269+
}
270+
MyDecorator.displayName = ComposedComponent.name + '-Decorated';
271+
return MyDecorator;
272+
}
273+
274+
var NestedSpan = myDecorator(<span />);
275+
var renderer = createRenderer();
276+
renderer.render(<NestedSpan />);
277+
expect(
278+
reactElementToJSXString(renderer.getRenderOutput())
279+
).toEqual(`<div>
280+
<span />
281+
</div>`);
282+
});
257283
});

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ function toJSXString({ReactElement = null, lvl = 0, inline = false}) {
2525
} else {
2626
tagName = ReactElement.type.name ||
2727
ReactElement.type.displayName ||
28+
ReactElement.type.type ||
2829
ReactElement.type;
2930
}
3031

0 commit comments

Comments
 (0)