为 React 组件中未使用的 class 方法设置 eslint 规则
Set eslint rule for unused class methods in React component
我正在尝试为 class 中从未使用过的方法设置 eslint 规则。就像在下面的 React 组件中一样,我有一个从未使用过的方法 unUsedMethod
,但是 eslint 没有显示错误。
class Sample extends Component {
unUsedMethod() {
console.log('I am never used');
}
render() {
return 'Hello!';
}
}
我的 eslint 文件看起来像这样
{
"parser": "babel-eslint",
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": ["eslint:recommended", "plugin:react/recommended"],
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"jsx": true,
"sourceType": "module",
"allowImportExportEverywhere": false,
"codeFrame": false
},
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
"indent": [2, 4, {"SwitchCase": 1, "ObjectExpression": "first"}],
"linebreak-style": [
"error",
"unix"
],
"semi": [
"error",
"always"
],
"react/display-name": 0,
"react/prop-types": 0, // Temporary
"react/no-unescaped-entities": 0,
"no-trailing-spaces": 1
}
}
这个插件可以满足您的要求。但是请注意。
https://www.npmjs.com/package/eslint-plugin-no-unused-react-component-methods
目前不可能简单地拥有一个解析器来检查未使用的组件属性,因为可以动态调用组件属性。
例如:
class Sample extends Component {
// Plugin falsely flags this as unused.
unUsedMethod() {
console.log('I am used dynamically');
}
render() {
// No way to parse dynamic function calls reliably
this['unUsedMethod']();
return 'Hello!';
}
}
它也不适用于 react-onclickoutside 包,因为它需要一个函数附加到组件,通过将组件包装在 HOC 中来调用。 https://www.npmjs.com/package/react-onclickoutside
还是插件帮我找到了几个没用到的功能,个人觉得值得一试
首先安装包:npm i eslint-plugin-no-unused-react-component-methods --save-dev
将 "no-unused-react-component-methods" 添加到插件部分的 eslint 配置中:
{
"plugins": [
"no-unused-react-component-methods"
],
}
并添加到规则部分
{
"rules": {
"no-unused-react-component-methods/no-unused-react-component-methods": 2,
}
}
因此您的配置如下所示:
{
"parser": "babel-eslint",
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": ["eslint:recommended", "plugin:react/recommended"],
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"jsx": true,
"sourceType": "module",
"allowImportExportEverywhere": false,
"codeFrame": false
},
"sourceType": "module"
},
"plugins": [
"react",
"no-unused-react-component-methods"
],
"rules": {
"no-unused-react-component-methods/no-unused-react-component-methods": 2,
"indent": [2, 4, { "SwitchCase": 1, "ObjectExpression": "first" }],
"linebreak-style": ["error", "unix"],
"semi": ["error", "always"],
"react/display-name": 0,
"react/prop-types": 0, // Temporary
"react/no-unescaped-entities": 0,
"no-trailing-spaces": 1
}
}
现在它应该突出显示任何看似未使用的功能!让我知道它是否有效。
我正在尝试为 class 中从未使用过的方法设置 eslint 规则。就像在下面的 React 组件中一样,我有一个从未使用过的方法 unUsedMethod
,但是 eslint 没有显示错误。
class Sample extends Component {
unUsedMethod() {
console.log('I am never used');
}
render() {
return 'Hello!';
}
}
我的 eslint 文件看起来像这样
{
"parser": "babel-eslint",
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": ["eslint:recommended", "plugin:react/recommended"],
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"jsx": true,
"sourceType": "module",
"allowImportExportEverywhere": false,
"codeFrame": false
},
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
"indent": [2, 4, {"SwitchCase": 1, "ObjectExpression": "first"}],
"linebreak-style": [
"error",
"unix"
],
"semi": [
"error",
"always"
],
"react/display-name": 0,
"react/prop-types": 0, // Temporary
"react/no-unescaped-entities": 0,
"no-trailing-spaces": 1
}
}
这个插件可以满足您的要求。但是请注意。
https://www.npmjs.com/package/eslint-plugin-no-unused-react-component-methods
目前不可能简单地拥有一个解析器来检查未使用的组件属性,因为可以动态调用组件属性。
例如:
class Sample extends Component {
// Plugin falsely flags this as unused.
unUsedMethod() {
console.log('I am used dynamically');
}
render() {
// No way to parse dynamic function calls reliably
this['unUsedMethod']();
return 'Hello!';
}
}
它也不适用于 react-onclickoutside 包,因为它需要一个函数附加到组件,通过将组件包装在 HOC 中来调用。 https://www.npmjs.com/package/react-onclickoutside
还是插件帮我找到了几个没用到的功能,个人觉得值得一试
首先安装包:npm i eslint-plugin-no-unused-react-component-methods --save-dev
将 "no-unused-react-component-methods" 添加到插件部分的 eslint 配置中:
{
"plugins": [
"no-unused-react-component-methods"
],
}
并添加到规则部分
{
"rules": {
"no-unused-react-component-methods/no-unused-react-component-methods": 2,
}
}
因此您的配置如下所示:
{
"parser": "babel-eslint",
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": ["eslint:recommended", "plugin:react/recommended"],
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"jsx": true,
"sourceType": "module",
"allowImportExportEverywhere": false,
"codeFrame": false
},
"sourceType": "module"
},
"plugins": [
"react",
"no-unused-react-component-methods"
],
"rules": {
"no-unused-react-component-methods/no-unused-react-component-methods": 2,
"indent": [2, 4, { "SwitchCase": 1, "ObjectExpression": "first" }],
"linebreak-style": ["error", "unix"],
"semi": ["error", "always"],
"react/display-name": 0,
"react/prop-types": 0, // Temporary
"react/no-unescaped-entities": 0,
"no-trailing-spaces": 1
}
}
现在它应该突出显示任何看似未使用的功能!让我知道它是否有效。