Do not quote JSX attribute keys for IdentifierName (#8045)
Given the following
```js
a = <F new/>
```
We used to generate:
```js
a = React.createElement(F, {"new": true})
```
but now we generate
```js
a = React.createElement(F, {new: true})
```
If you need to quote these (ie for ES3 you can use
transform-property-literals)
This commit is contained in:
parent
d45ee5e025
commit
7846eaebaa
@ -89,14 +89,14 @@ You can turn on the 'throwIfNamespace' flag to bypass this warning.`,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t.isValidIdentifier(node.name.name)) {
|
if (t.isJSXNamespacedName(node.name)) {
|
||||||
|
node.name = t.stringLiteral(
|
||||||
|
node.name.namespace.name + ":" + node.name.name.name,
|
||||||
|
);
|
||||||
|
} else if (esutils.keyword.isIdentifierNameES6(node.name.name)) {
|
||||||
node.name.type = "Identifier";
|
node.name.type = "Identifier";
|
||||||
} else {
|
} else {
|
||||||
node.name = t.stringLiteral(
|
node.name = t.stringLiteral(node.name.name);
|
||||||
t.isJSXNamespacedName(node.name)
|
|
||||||
? node.name.namespace.name + ":" + node.name.name.name
|
|
||||||
: node.name.name,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return t.inherits(t.objectProperty(node.name, value), node);
|
return t.inherits(t.objectProperty(node.name, value), node);
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
var test = babelHelpers.jsx(T, {
|
var test = babelHelpers.jsx(T, {
|
||||||
"default": " some string "
|
default: " some string "
|
||||||
});
|
});
|
||||||
|
|||||||
1
packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/input.js
vendored
Normal file
1
packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/input.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
var es3 = <F aaa new const var default foo-bar/>;
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"plugins": ["transform-react-jsx", "transform-property-literals"]
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
var es3 = React.createElement(F, {
|
||||||
|
aaa: true,
|
||||||
|
"new": true,
|
||||||
|
"const": true,
|
||||||
|
"var": true,
|
||||||
|
"default": true,
|
||||||
|
"foo-bar": true
|
||||||
|
});
|
||||||
@ -0,0 +1 @@
|
|||||||
|
var e = <F aaa new const var default foo-bar/>;
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
var e = React.createElement(F, {
|
||||||
|
aaa: true,
|
||||||
|
new: true,
|
||||||
|
const: true,
|
||||||
|
var: true,
|
||||||
|
default: true,
|
||||||
|
"foo-bar": true
|
||||||
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user