Skip to content

Commit d3c6562

Browse files
authored
fix: React should not be in scope (#48)
1 parent fb11f4c commit d3c6562

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

base.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export default defineConfig(
2121
parserOptions: {
2222
ecmaFeatures: {
2323
jsx: true,
24+
jsxPragma: null,
2425
},
2526
},
2627
},
@@ -83,7 +84,7 @@ export default defineConfig(
8384
'react/jsx-no-undef': 'error',
8485
'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }],
8586
'react/jsx-pascal-case': ['error', { allowAllCaps: true }],
86-
'react/jsx-uses-react': 'error',
87+
'react/jsx-uses-react': 'off',
8788
'react/jsx-uses-vars': 'error',
8889
},
8990
},

test/not_ok.jsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import React, { useEffect, useState } from 'react';
2+
3+
export default function MyComponent() {
4+
const [value] = useState('');
5+
useEffect(() => value, []);
6+
return <div>Hello world</div>;
7+
}

test/test.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,39 @@ const ESLint = await loadESLint({ useFlatConfig: true });
66
/** @type {import('eslint').ESLint} */
77
const eslint = new ESLint();
88

9-
const [okResult] = await eslint.lintFiles(['test/ok.jsx']);
9+
const [okResult, notOkResult] = await eslint.lintFiles([
10+
'test/ok.jsx',
11+
'test/not_ok.jsx',
12+
]);
1013

1114
assert.strictEqual(okResult.errorCount, 0, 'ok.jsx should have no error');
15+
16+
const errors = notOkResult.messages.filter(isError).map(getRuleId).sort();
17+
18+
assert.deepStrictEqual(errors, [
19+
'no-unused-vars',
20+
'react-hooks/exhaustive-deps',
21+
]);
22+
23+
const warnings = notOkResult.messages
24+
.filter(isWarning)
25+
.filter(excludeJsdoc)
26+
.map(getRuleId)
27+
.sort();
28+
assert.deepStrictEqual(warnings, []);
29+
30+
function isError(message) {
31+
return message.severity === 2;
32+
}
33+
34+
function isWarning(message) {
35+
return message.severity === 1;
36+
}
37+
38+
function excludeJsdoc(message) {
39+
return !message.ruleId.startsWith('jsdoc/');
40+
}
41+
42+
function getRuleId(message) {
43+
return message.ruleId;
44+
}

0 commit comments

Comments
 (0)