Skip to content

Commit c670bb2

Browse files
committed
Add React.PureComponent support (fixes #737)
1 parent 763382f commit c670bb2

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

lib/util/Components.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ function componentRule(rule, context) {
170170
if (!node.superClass) {
171171
return false;
172172
}
173-
return new RegExp('^(' + pragma + '\\.)?Component$').test(sourceCode.getText(node.superClass));
173+
return new RegExp('^(' + pragma + '\\.)?(Pure)?Component$').test(sourceCode.getText(node.superClass));
174174
},
175175

176176
/**
@@ -192,7 +192,7 @@ function componentRule(rule, context) {
192192
});
193193

194194
var relevantTags = commentAst.tags.filter(function(tag) {
195-
return tag.name === 'React.Component';
195+
return tag.name === 'React.Component' || tag.name === 'React.PureComponent';
196196
});
197197

198198
return relevantTags.length > 0;

tests/lib/rules/prop-types.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2255,6 +2255,36 @@ ruleTester.run('prop-types', rule, {
22552255
errors: [
22562256
{message: '\'bar\' is missing in props validation'}
22572257
]
2258+
}, {
2259+
code: [
2260+
'class Hello extends React.PureComponent {',
2261+
' render() {',
2262+
' return <div>Hello {this.props.name}</div>;',
2263+
' }',
2264+
'}'
2265+
].join('\n'),
2266+
parserOptions: parserOptions,
2267+
errors: [{
2268+
message: '\'name\' is missing in props validation',
2269+
line: 3,
2270+
column: 35,
2271+
type: 'Identifier'
2272+
}]
2273+
}, {
2274+
code: [
2275+
'class Hello extends PureComponent {',
2276+
' render() {',
2277+
' return <div>Hello {this.props.name}</div>;',
2278+
' }',
2279+
'}'
2280+
].join('\n'),
2281+
parserOptions: parserOptions,
2282+
errors: [{
2283+
message: '\'name\' is missing in props validation',
2284+
line: 3,
2285+
column: 35,
2286+
type: 'Identifier'
2287+
}]
22582288
}
22592289
]
22602290
});

0 commit comments

Comments
 (0)