Skip to content

Commit d464347

Browse files
committed
Fix direct props detection (fixes #298)
1 parent 004baae commit d464347

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/rules/prop-types.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ module.exports = Components.detect(function(context, components) {
327327
* @return {string} the name of the property or undefined if not found
328328
*/
329329
function getPropertyName(node) {
330-
var isDirectProp = /^props\./.test(context.getSource(node));
330+
var isDirectProp = /^props(\.|\[)/.test(context.getSource(node));
331331
var isInClassComponent = context.react.getParentES6Component() || context.react.getParentES5Component();
332332
var isNotInConstructor = !inConstructor(node);
333333
if (isDirectProp && isInClassComponent && isNotInConstructor) {
@@ -418,7 +418,7 @@ module.exports = Components.detect(function(context, components) {
418418
break;
419419
}
420420

421-
var isDirectProp = /^props\./.test(context.getSource(node));
421+
var isDirectProp = /^props(\.|\[)/.test(context.getSource(node));
422422

423423
usedPropTypes.push({
424424
name: name,

tests/lib/rules/prop-types.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,17 @@ ruleTester.run('prop-types', rule, {
893893
'};'
894894
].join('\n'),
895895
parser: 'babel-eslint'
896+
}, {
897+
// Reassigned props are ignored
898+
code: [
899+
'export class Hello extends Component {',
900+
' render() {',
901+
' const props = this.props;',
902+
' return <div>Hello {props.name.firstname} {props[\'name\'].lastname}</div>',
903+
' }',
904+
'}'
905+
].join('\n'),
906+
parser: 'babel-eslint'
896907
}
897908
],
898909

0 commit comments

Comments
 (0)