From 4e321a51496b8c8feee1fb479742a99b34ffd5f5 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Thu, 31 Aug 2017 23:17:24 +0100 Subject: [PATCH] Add React.PureComponent to the list of default super classes --- src/index.js | 2 +- .../.babelrc | 9 +++++++ .../actual.js | 4 +++ .../expected.js | 25 +++++++++++++++++++ test/fixtures/code-exports/actual.js | 6 ++--- test/fixtures/code-exports/expected.js | 8 ++---- 6 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/code-class-extends-purecomponent-with-render-method/.babelrc create mode 100644 test/fixtures/code-class-extends-purecomponent-with-render-method/actual.js create mode 100644 test/fixtures/code-class-extends-purecomponent-with-render-method/expected.js diff --git a/src/index.js b/src/index.js index 0e49f55..32205d5 100644 --- a/src/index.js +++ b/src/index.js @@ -171,7 +171,7 @@ export default function({ types: t, template }) { normalizeOptions(options) { return { factoryMethods: options.factoryMethods || ['React.createClass'], - superClasses: options.superClasses || ['React.Component', 'Component'], + superClasses: options.superClasses || ['React.Component', 'React.PureComponent', 'Component', 'PureComponent'], transforms: options.transforms.map(opts => { return { transform: opts.transform, diff --git a/test/fixtures/code-class-extends-purecomponent-with-render-method/.babelrc b/test/fixtures/code-class-extends-purecomponent-with-render-method/.babelrc new file mode 100644 index 0000000..9eef59e --- /dev/null +++ b/test/fixtures/code-class-extends-purecomponent-with-render-method/.babelrc @@ -0,0 +1,9 @@ +{ + "plugins": [ + ["../../../src", { + "transforms": [{ + "transform": "transform-lib" + }] + }] + ] +} diff --git a/test/fixtures/code-class-extends-purecomponent-with-render-method/actual.js b/test/fixtures/code-class-extends-purecomponent-with-render-method/actual.js new file mode 100644 index 0000000..7490eb3 --- /dev/null +++ b/test/fixtures/code-class-extends-purecomponent-with-render-method/actual.js @@ -0,0 +1,4 @@ +import React, { PureComponent } from 'react'; +class Foo extends PureComponent { + render() {} +} diff --git a/test/fixtures/code-class-extends-purecomponent-with-render-method/expected.js b/test/fixtures/code-class-extends-purecomponent-with-render-method/expected.js new file mode 100644 index 0000000..fa30b1b --- /dev/null +++ b/test/fixtures/code-class-extends-purecomponent-with-render-method/expected.js @@ -0,0 +1,25 @@ +import _transformLib from 'transform-lib'; +const _components = { + Foo: { + displayName: 'Foo' + } +}; + +const _transformLib2 = _transformLib({ + filename: '%FIXTURE_PATH%', + components: _components, + locals: [], + imports: [] +}); + +function _wrapComponent(id) { + return function (Component) { + return _transformLib2(Component, id); + }; +} + +import React, { PureComponent } from 'react'; + +const Foo = _wrapComponent('Foo')(class Foo extends PureComponent { + render() {} +}); diff --git a/test/fixtures/code-exports/actual.js b/test/fixtures/code-exports/actual.js index efe900c..71a9903 100644 --- a/test/fixtures/code-exports/actual.js +++ b/test/fixtures/code-exports/actual.js @@ -1,8 +1,6 @@ -export default class Foo extends React.Component {} -export default class extends React.Component {} +export class Foo extends React.Component {} export default React.createClass({}); export class Bar extends React.Component {} export const bar = React.createClass({}); -export default class Baz { render() {} } -export default class { render() {} } +export class Baz { render() {} } export class Boo { render() {} } diff --git a/test/fixtures/code-exports/expected.js b/test/fixtures/code-exports/expected.js index 9e0e46c..96adadf 100644 --- a/test/fixtures/code-exports/expected.js +++ b/test/fixtures/code-exports/expected.js @@ -1,12 +1,8 @@ -export default class Foo extends React.Component {} -export default class extends React.Component {} +export class Foo extends React.Component {} export default React.createClass({}); export class Bar extends React.Component {} export const bar = React.createClass({}); -export default class Baz { - render() {} -} -export default class { +export class Baz { render() {} } export class Boo {