Skip to content

Commit 982fcf5

Browse files
vitaliymazgajus
authored andcommitted
fix: #285 react-css-modules causes modifying key property of the component children (#286)
1 parent 54b4367 commit 982fcf5

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/linkClass.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
5050
if (React.isValidElement(children)) {
5151
elementShallowCopy.props.children = linkElement(React.Children.only(children), styles, configuration);
5252
} else if (_.isArray(children) || isIterable(children)) {
53-
elementShallowCopy.props.children = React.Children.map(children, (node) => {
53+
elementShallowCopy.props.children = _.map(children, (node) => {
5454
if (React.isValidElement(node)) {
5555
// eslint-disable-next-line no-use-before-define
5656
return linkElement(React.Children.only(node), styles, configuration);

tests/linkClass.js

+16
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,22 @@ describe('linkClass', () => {
141141
expect(subject.props.children[0].props).not.to.have.property('styleName');
142142
expect(subject.props.children[1].props).not.to.have.property('styleName');
143143
});
144+
it('preserves original keys', () => {
145+
let subject;
146+
147+
subject = <div>
148+
<p key='1' styleName='foo' />
149+
<p key='2' styleName='bar' />
150+
</div>;
151+
152+
subject = linkClass(subject, {
153+
bar: 'bar-1',
154+
foo: 'foo-1'
155+
});
156+
157+
expect(subject.props.children[0].key).to.equal('1');
158+
expect(subject.props.children[1].key).to.equal('2');
159+
});
144160
});
145161
context('when multiple descendants have styleName and are iterable', () => {
146162
it('assigns a generated className', () => {

0 commit comments

Comments
 (0)