Skip to content

Commit 504e0d0

Browse files
committed
Fix detection to allow simple this usage in fonctional components (fixes #576)
1 parent 01af82d commit 504e0d0

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

lib/util/Components.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,11 @@ function componentRule(rule, context) {
424424
},
425425

426426
ThisExpression: function(node) {
427-
node = utils.getParentComponent();
428-
if (!node || !/Function/.test(node.type)) {
427+
var component = utils.getParentComponent();
428+
if (!component || !/Function/.test(component.type) || !node.parent.property) {
429429
return;
430430
}
431-
// Ban functions with a ThisExpression
431+
// Ban functions accessing a property on a ThisExpression
432432
components.add(node, 0);
433433
},
434434

tests/lib/rules/no-multi-comp.js

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,6 @@ ruleTester.run('no-multi-comp', rule, {
6161
'});'
6262
].join('\r'),
6363
parserOptions: parserOptions
64-
}, {
65-
code: [
66-
'export default {',
67-
' renderHello() {',
68-
' let {name} = this.props;',
69-
' return <div>{name}</div>;',
70-
' },',
71-
' renderHello2() {',
72-
' let {name2} = this.props;',
73-
' return <div>{name2}</div>;',
74-
' }',
75-
'};'
76-
].join('\n'),
77-
parser: 'babel-eslint'
7864
}, {
7965
code: [
8066
'function Hello(props) {',
@@ -179,5 +165,23 @@ ruleTester.run('no-multi-comp', rule, {
179165
message: 'Declare only one React component per file',
180166
line: 4
181167
}]
168+
}, {
169+
code: [
170+
'export default {',
171+
' renderHello(props) {',
172+
' let {name} = props;',
173+
' return <div>{name}</div>;',
174+
' },',
175+
' renderHello2(props) {',
176+
' let {name} = props;',
177+
' return <div>{name}</div>;',
178+
' }',
179+
'};'
180+
].join('\n'),
181+
parser: 'babel-eslint',
182+
errors: [{
183+
message: 'Declare only one React component per file',
184+
line: 6
185+
}]
182186
}]
183187
});

0 commit comments

Comments
 (0)