Skip to content

Commit 2182795

Browse files
committed
Removed the caching in makeConfiguration and moved where it is invoked
This resolves a memory leak and gives greater performance overall
1 parent e1b4a3d commit 2182795

File tree

3 files changed

+8
-21
lines changed

3 files changed

+8
-21
lines changed

src/index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import _ from 'lodash';
22
import extendReactClass from './extendReactClass';
33
import wrapStatelessFunction from './wrapStatelessFunction';
4+
import makeConfiguration from './makeConfiguration';
45

56
/**
67
* @see https://github.com/gajus/react-css-modules#options
@@ -20,10 +21,12 @@ const isReactComponent = (maybeReactComponent: any): boolean => {
2021
const functionConstructor = (Component: Function, defaultStyles: Object, options: OptionsType): Function => {
2122
let decoratedClass;
2223

24+
const configuration = makeConfiguration(options);
25+
2326
if (isReactComponent(Component)) {
24-
decoratedClass = extendReactClass(Component, defaultStyles, options);
27+
decoratedClass = extendReactClass(Component, defaultStyles, configuration);
2528
} else {
26-
decoratedClass = wrapStatelessFunction(Component, defaultStyles, options);
29+
decoratedClass = wrapStatelessFunction(Component, defaultStyles, configuration);
2730
}
2831

2932
if (Component.displayName) {

src/linkClass.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import _ from 'lodash';
22
import React, {
33
ReactElement
44
} from 'react';
5-
import makeConfiguration from './makeConfiguration';
65
import isIterable from './isIterable';
76
import parseStyleName from './parseStyleName';
87
import generateAppendClassName from './generateAppendClassName';
@@ -61,15 +60,13 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
6160
/**
6261
* @param {ReactElement} element
6362
* @param {Object} styles CSS modules class map.
64-
* @param {CSSModules~Options} userConfiguration
63+
* @param {CSSModules~Options} configuration
6564
*/
66-
export default (element: ReactElement, styles = {}, userConfiguration): ReactElement => {
65+
export default (element: ReactElement, styles = {}, configuration = {}): ReactElement => {
6766
// @see https://github.com/gajus/react-css-modules/pull/30
6867
if (!_.isObject(element)) {
6968
return element;
7069
}
7170

72-
const configuration = makeConfiguration(userConfiguration);
73-
7471
return linkElement(element, styles, configuration);
7572
};

src/makeConfiguration.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
import _ from 'lodash';
2-
import Map from 'es6-map';
3-
4-
const userConfigurationIndex = new Map();
52

63
/**
74
* @typedef CSSModules~Options
@@ -15,15 +12,7 @@ const userConfigurationIndex = new Map();
1512
* @returns {CSSModules~Options}
1613
*/
1714
export default (userConfiguration = {}) => {
18-
let configuration;
19-
20-
configuration = userConfigurationIndex.get(userConfiguration);
21-
22-
if (configuration) {
23-
return configuration;
24-
}
25-
26-
configuration = {
15+
const configuration = {
2716
allowMultiple: false,
2817
errorWhenNotFound: true
2918
};
@@ -40,7 +29,5 @@ export default (userConfiguration = {}) => {
4029
configuration[name] = value;
4130
});
4231

43-
userConfigurationIndex.set(userConfiguration, configuration);
44-
4532
return configuration;
4633
};

0 commit comments

Comments
 (0)