Skip to content

Commit 2d7c2f6

Browse files
committed
Calling linkClass once per render.
1 parent 1072bf5 commit 2d7c2f6

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

src/linkClass.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,16 @@ import isIterable from './isIterable';
55
import parseStyleName from './parseStyleName';
66
import generateAppendClassName from './generateAppendClassName';
77

8-
let linkClass;
8+
let linkElement;
99

10-
/**
11-
* @param {ReactElement} element
12-
* @param {Object} styles CSS modules class map.
13-
* @param {CSSModules~Options} userConfiguration
14-
* @returns {ReactElement}
15-
*/
16-
linkClass = (element, styles = {}, userConfiguration) => {
10+
linkElement = (element, styles, configuration) => {
1711
let appendClassName,
1812
children,
1913
clonedElement,
20-
configuration,
2114
newChildren,
2215
newProps,
2316
styleNames;
2417

25-
// @see https://github.com/gajus/react-css-modules/pull/30
26-
if (!_.isObject(element)) {
27-
return element;
28-
}
29-
30-
configuration = makeConfiguration(userConfiguration);
31-
3218
styleNames = parseStyleName(element.props.styleName || '', configuration.allowMultiple);
3319

3420
if (styleNames.length) {
@@ -44,11 +30,11 @@ linkClass = (element, styles = {}, userConfiguration) => {
4430
children = element.props.children;
4531

4632
if (React.isValidElement(children)) {
47-
newChildren = linkClass(React.Children.only(children), styles, configuration);
33+
newChildren = linkElement(React.Children.only(children), styles, configuration);
4834
} else if (_.isArray(children) || isIterable(children)) {
4935
newChildren = React.Children.map(children, (node) => {
5036
if (React.isValidElement(node)) {
51-
return linkClass(node, styles, configuration);
37+
return linkElement(node, styles, configuration);
5238
} else {
5339
return node;
5440
}
@@ -80,4 +66,21 @@ linkClass = (element, styles = {}, userConfiguration) => {
8066
return clonedElement;
8167
};
8268

83-
export default linkClass;
69+
/**
70+
* @param {ReactElement} element
71+
* @param {Object} styles CSS modules class map.
72+
* @param {CSSModules~Options} userConfiguration
73+
* @returns {ReactElement}
74+
*/
75+
export default (element, styles = {}, userConfiguration) => {
76+
let configuration;
77+
78+
// @see https://github.com/gajus/react-css-modules/pull/30
79+
if (!_.isObject(element)) {
80+
return element;
81+
}
82+
83+
configuration = makeConfiguration(userConfiguration);
84+
85+
return linkElement(element, styles, configuration);
86+
};

0 commit comments

Comments
 (0)