Skip to content

Commit 46d13c0

Browse files
author
Keyan Zhang
committed
added pure-component option
1 parent ef23055 commit 46d13c0

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// for this file we disable the `pure-component` option
2+
// so the output should be just nothing
3+
var React = require('React');
4+
var ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');
5+
6+
var ComponentWithOnlyPureRenderMixin = React.createClass({
7+
mixins: [ReactComponentWithPureRenderMixin],
8+
9+
getInitialState: function() {
10+
return {
11+
counter: this.props.initialNumber + 1,
12+
};
13+
},
14+
15+
render: function() {
16+
return (
17+
<div>{this.state.counter}</div>
18+
);
19+
},
20+
});

transforms/__testfixtures__/class-pure-mixin3.output.js

Whitespace-only changes.

transforms/__tests__/class-test.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,23 @@ const defineTest = require('jscodeshift/dist/testUtils').defineTest;
1414

1515
const pureMixinAlternativeOption = {
1616
'mixin-module-name': 'ReactComponentWithPureRenderMixin',
17+
'pure-component': true,
1718
};
1819

20+
const enableFlowOption = {flow: true};
21+
1922
defineTest(__dirname, 'class');
20-
defineTest(__dirname, 'class', {flow: true}, 'class-anonymous');
23+
defineTest(__dirname, 'class', enableFlowOption, 'class-anonymous');
2124
defineTest(__dirname, 'class', pureMixinAlternativeOption, 'class-test2');
22-
defineTest(__dirname, 'class', {flow: true}, 'export-default-class');
25+
defineTest(__dirname, 'class', enableFlowOption, 'export-default-class');
2326
defineTest(__dirname, 'class', pureMixinAlternativeOption, 'class-pure-mixin1');
24-
defineTest(__dirname, 'class', {flow: true}, 'class-pure-mixin2');
25-
defineTest(__dirname, 'class', {flow: true}, 'class-initial-state');
26-
defineTest(__dirname, 'class', {flow: true}, 'class-property-field');
27-
defineTest(__dirname, 'class', {flow: true}, 'class-flow1');
28-
defineTest(__dirname, 'class', {flow: true}, 'class-flow2');
29-
defineTest(__dirname, 'class', {flow: true}, 'class-flow3');
30-
defineTest(__dirname, 'class', {flow: true}, 'class-flow4');
31-
defineTest(__dirname, 'class', {flow: true}, 'class-flow5');
32-
defineTest(__dirname, 'class', {flow: true}, 'class-flow6');
27+
defineTest(__dirname, 'class', {...enableFlowOption, 'pure-component': true}, 'class-pure-mixin2');
28+
defineTest(__dirname, 'class', null, 'class-pure-mixin3');
29+
defineTest(__dirname, 'class', enableFlowOption, 'class-initial-state');
30+
defineTest(__dirname, 'class', enableFlowOption, 'class-property-field');
31+
defineTest(__dirname, 'class', enableFlowOption, 'class-flow1');
32+
defineTest(__dirname, 'class', enableFlowOption, 'class-flow2');
33+
defineTest(__dirname, 'class', enableFlowOption, 'class-flow3');
34+
defineTest(__dirname, 'class', enableFlowOption, 'class-flow4');
35+
defineTest(__dirname, 'class', enableFlowOption, 'class-flow5');
36+
defineTest(__dirname, 'class', enableFlowOption, 'class-flow6');

transforms/class.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,7 @@ module.exports = (file, api, options) => {
998998
const mixinsFilter = (classPath) => {
999999
if (!ReactUtils.hasMixins(classPath)) {
10001000
return true;
1001-
} else if (pureRenderMixinPathAndBinding) {
1001+
} else if (options['pure-component'] && pureRenderMixinPathAndBinding) {
10021002
const {binding} = pureRenderMixinPathAndBinding;
10031003
if (areMixinsConvertible([binding], classPath)) {
10041004
return true;

0 commit comments

Comments
 (0)