Merge pull request #5780 from kentor/react-display-name-to-support-createReactClass

Backport support for createReactClass with transform-react-display-name
This commit is contained in:
Justin Ridgewell 2017-06-05 16:13:16 -04:00 committed by GitHub
commit 783d85ee4b
10 changed files with 41 additions and 13 deletions

View File

@ -1,13 +1,14 @@
# babel-plugin-transform-react-display-name # babel-plugin-transform-react-display-name
> Add displayName to React.createClass calls > Add displayName to `createReactClass` (and `React.createClass`) calls
## Example ## Example
**In** **In**
```js ```js
var foo = React.createClass({}); var foo = React.createClass({}); // React <= 15
var bar = createReactClass({}); // React 16+
``` ```
**Out** **Out**
@ -15,7 +16,10 @@ var foo = React.createClass({});
```js ```js
var foo = React.createClass({ var foo = React.createClass({
displayName: "foo" displayName: "foo"
}); }); // React <= 15
var bar = createReactClass({
displayName: "bar"
}); // React 16+
``` ```
## Installation ## Installation

View File

@ -20,12 +20,16 @@ export default function ({ types: t }) {
} }
const isCreateClassCallExpression = t.buildMatchMemberExpression("React.createClass"); const isCreateClassCallExpression = t.buildMatchMemberExpression("React.createClass");
const isCreateClassAddon = (callee) => callee.name === "createReactClass";
function isCreateClass(node) { function isCreateClass(node) {
if (!node || !t.isCallExpression(node)) return false; if (!node || !t.isCallExpression(node)) return false;
// not React.createClass call member object // not createReactClass nor React.createClass call member object
if (!isCreateClassCallExpression(node.callee)) return false; if (
!isCreateClassCallExpression(node.callee) &&
!isCreateClassAddon(node.callee)
) return false;
// no call arguments // no call arguments
const args = node.arguments; const args = node.arguments;

View File

@ -1 +1,2 @@
foo = React.createClass({}); foo = createReactClass({});
bar = React.createClass({});

View File

@ -1,3 +1,6 @@
foo = React.createClass({ foo = createReactClass({
displayName: "foo" displayName: "foo"
});
bar = React.createClass({
displayName: "bar"
}); });

View File

@ -1 +1,2 @@
var foo = bar(React.createClass({})); var foo = qux(createReactClass({}));
var bar = qux(React.createClass({}));

View File

@ -1,3 +1,6 @@
var foo = bar(React.createClass({ var foo = qux(createReactClass({
displayName: "foo" displayName: "foo"
}));
var bar = qux(React.createClass({
displayName: "bar"
})); }));

View File

@ -1,3 +1,6 @@
({ ({
foo: React.createClass({}) foo: createReactClass({})
}); });
({
bar: React.createClass({})
});

View File

@ -1,5 +1,10 @@
({ ({
foo: React.createClass({ foo: createReactClass({
displayName: "foo" displayName: "foo"
}) })
});
({
bar: React.createClass({
displayName: "bar"
})
}); });

View File

@ -1 +1,2 @@
var foo = React.createClass({}); var foo = createReactClass({});
var bar = React.createClass({});

View File

@ -1,3 +1,6 @@
var foo = React.createClass({ var foo = createReactClass({
displayName: "foo" displayName: "foo"
});
var bar = React.createClass({
displayName: "bar"
}); });