Skip to content

Commit ee403bd

Browse files
committed
Only check extensiblity of props
Also run preventExtensions on it after modifications
1 parent 757e3c3 commit ee403bd

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/linkClass.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,19 @@ const linkArray = (array: Array, styles: Object, configuration: Object) => {
2222

2323
const linkElement = (element: ReactElement, styles: Object, configuration: Object): ReactElement => {
2424
let appendClassName;
25-
let elementIsFrozen;
2625
let elementShallowCopy;
2726

2827
elementShallowCopy = element;
29-
elementIsFrozen = Object.isFrozen && (
30-
Object.isFrozen(elementShallowCopy) ||
31-
Object.isFrozen(elementShallowCopy.props)
32-
) || Object.isExtensible && (
33-
!Object.isExtensible(elementShallowCopy) ||
34-
!Object.isExtensible(elementShallowCopy.props)
35-
);
28+
29+
const elementIsFrozen = Object.isFrozen && Object.isFrozen(elementShallowCopy);
30+
const propsNotExtensible = Object.isExtensible && !Object.isExtensible(elementShallowCopy.props);
3631

3732
if (elementIsFrozen) {
3833
// https://github.com/facebook/react/blob/v0.13.3/src/classic/element/ReactElement.js#L131
3934
elementShallowCopy = objectUnfreeze(elementShallowCopy);
4035
elementShallowCopy.props = objectUnfreeze(elementShallowCopy.props);
36+
} else if (propsNotExtensible) {
37+
elementShallowCopy.props = objectUnfreeze(elementShallowCopy.props);
4138
}
4239

4340
const styleNames = parseStyleName(elementShallowCopy.props.styleName || '', configuration.allowMultiple);
@@ -83,6 +80,10 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
8380
Object.freeze(elementShallowCopy);
8481
}
8582

83+
if (propsNotExtensible) {
84+
Object.preventExtensions(elementShallowCopy.props);
85+
}
86+
8687
return elementShallowCopy;
8788
};
8889

0 commit comments

Comments
 (0)