Skip to content

Commit 8401332

Browse files
committed
Resolve displayName from target name when target displayName is undefined.
1 parent 6bb6e5c commit 8401332

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

src/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ let decoratorConstructor,
1414
* @return {Function}
1515
*/
1616
functionConstructor = (Component, defaultStyles, options) => {
17-
return class extends Component {
18-
static displayName = Component.displayName;
17+
let decoratedClass;
1918

19+
decoratedClass = class extends Component {
2020
render () {
2121
let renderResult,
2222
styles;
@@ -38,6 +38,14 @@ functionConstructor = (Component, defaultStyles, options) => {
3838
return React.createElement('noscript');
3939
}
4040
};
41+
42+
if (Component.displayName) {
43+
decoratedClass.displayName = Component.displayName;
44+
} else {
45+
decoratedClass.displayName = Component.name;
46+
}
47+
48+
return decoratedClass;
4149
};
4250

4351
/**

test/reactCssModules.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/* eslint-disable max-nested-callbacks */
2+
13
import {
24
expect
35
} from 'chai';
@@ -12,12 +14,23 @@ describe('reactCssModules', () => {
1214
let Foo;
1315

1416
Foo = class extends React.Component {
15-
static displayName = 'Foo';
17+
static displayName = 'Bar';
1618
};
1719

1820
Foo = reactCssModules(Foo);
1921

20-
expect(Foo.displayName).to.equal('Foo');
22+
expect(Foo.displayName).to.equal('Bar');
23+
});
24+
context('target component does not name displayName', () => {
25+
it('uses name for displayName', () => {
26+
let Foo;
27+
28+
Foo = class Bar extends React.Component {};
29+
30+
Foo = reactCssModules(Foo);
31+
32+
expect(Foo.displayName).to.equal('Bar');
33+
});
2134
});
2235
});
2336
context('a ReactComponent renders an element with the styleName prop', () => {

0 commit comments

Comments
 (0)