diff --git a/src/index.spec.js b/src/index.spec.js
index e7ec29b08..31ffd0796 100644
--- a/src/index.spec.js
+++ b/src/index.spec.js
@@ -725,6 +725,26 @@ describe('reactElementToJSXString(ReactElement)', () => {
);
});
+ it('reactElementToJSXString(
', () => {
+ expect(
+ reactElementToJSXString(
+
+ )
+ ).toEqual(
+ ``
+ );
+ });
+
it('reactElementToJSXString(\\n {null}\\n
', () => {
const element = {null}
;
diff --git a/src/parser/parseReactElement.js b/src/parser/parseReactElement.js
index 589a59169..431065c92 100644
--- a/src/parser/parseReactElement.js
+++ b/src/parser/parseReactElement.js
@@ -117,9 +117,20 @@ const parseReactElement = (
}
const key = element.key;
- if (typeof key === 'string' && key.search(/^\./)) {
- // React automatically add key=".X" when there are some children
- props.key = key;
+ if (typeof key === 'string') {
+ let originalKey = key;
+ // React automatically adds ".$" to the original key when the element is a child which has a key prop
+ if (key.indexOf('.$') === 0) {
+ originalKey = key.slice('.$'.length);
+ }
+ // React automatically adds key=".X" when there are some children
+ else if (key.indexOf('.') === 0) {
+ originalKey = null;
+ }
+
+ if (originalKey) {
+ props.key = originalKey;
+ }
}
const defaultProps = filterProps(element.type.defaultProps || {}, noChildren);