eslint-config-alloy
Version:
AlloyTeam ESLint 规则
459 lines • 113 kB
JSON
{
"react/boolean-prop-naming": {
"name": "react/boolean-prop-naming",
"value": "off",
"description": "布尔值类型的 propTypes 的 name 必须为 is 或 has 开头",
"reason": "类型相关的约束交给 TypeScript",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/button-has-type": {
"name": "react/button-has-type",
"value": "off",
"description": "<button> 必须有 type 属性",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/default-props-match-prop-types": {
"name": "react/default-props-match-prop-types",
"value": "off",
"description": "一个 defaultProps 必须有对应的 propTypes",
"reason": "类型相关的约束交给 TypeScript",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/destructuring-assignment": {
"name": "react/destructuring-assignment",
"value": "off",
"description": "props, state, context 必须用解构赋值",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/display-name": {
"name": "react/display-name",
"value": "off",
"description": "组件必须有 displayName 属性",
"reason": "不强制要求写 displayName",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/forbid-component-props": {
"name": "react/forbid-component-props",
"value": "off",
"description": "禁止在自定义组件中使用指定的 props",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/forbid-dom-props": {
"name": "react/forbid-dom-props",
"value": "off",
"description": "禁止在 dom 组件中使用指定的 props",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/forbid-elements": {
"name": "react/forbid-elements",
"value": "off",
"description": "禁止使用指定的组件",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/forbid-foreign-prop-types": {
"name": "react/forbid-foreign-prop-types",
"value": "off",
"description": "禁止使用另一个组件的 propTypes",
"reason": "类型相关的约束交给 TypeScript",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/forbid-prop-types": {
"name": "react/forbid-prop-types",
"value": "off",
"description": "禁止使用 PropTypes.any PropTypes.array 和 PropTypes.object",
"reason": "类型相关的约束交给 TypeScript",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/function-component-definition": {
"name": "react/function-component-definition",
"value": "off",
"description": "限制函数式组件的函数形式(函数声明、函数表达式或箭头函数)",
"reason": "一些场景还不能覆盖,如 export default function,自动修复功能在 ts 中有些问题",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/hook-use-state": {
"name": "react/hook-use-state",
"value": "off",
"description": "hook 的返回值必须与 useState 的解构对应",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/iframe-missing-sandbox": {
"name": "react/iframe-missing-sandbox",
"value": "error",
"description": "iframe 组件必须添加 sandbox 属性",
"reason": "",
"badExample": "<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">Frame</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><mark class=\"eslint-error\" data-tip=\"An iframe element is missing a sandbox attribute<br/><span class='eslint-error-rule-id'>eslint(react/iframe-missing-sandbox)</span>\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>iframe</span><span class=\"token punctuation\">></span></mark></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>iframe</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span><mark class=\"eslint-error\" data-tip=\"An iframe element is missing a sandbox attribute<br/><span class='eslint-error-rule-id'>eslint(react/iframe-missing-sandbox)</span>\">React<span class=\"token punctuation\">.</span><span class=\"token function\">createElement</span><span class=\"token punctuation\">(</span><span class=\"token string\">'iframe'</span><span class=\"token punctuation\">)</span></mark><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> Frame1 <span class=\"token operator\">=</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>iframe</span> <span class=\"token attr-name\">sandbox</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>allow-popups<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">Frame2</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>iframe</span> <span class=\"token attr-name\">sandbox</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>allow-popups<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>iframe</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span>React<span class=\"token punctuation\">.</span><span class=\"token function\">createElement</span><span class=\"token punctuation\">(</span><span class=\"token string\">'iframe'</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span> sandbox<span class=\"token punctuation\">:</span> <span class=\"token string\">'allow-popups'</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-boolean-value": {
"name": "react/jsx-boolean-value",
"value": "off",
"description": "布尔值的属性必须显式的声明值为 true",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-curly-brace-presence": {
"name": "react/jsx-curly-brace-presence",
"value": ["error", "never"],
"description": "禁止 jsx 中使用无用的引号",
"reason": "",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">App</span></span> <span class=\"token attr-name\">prop</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><mark class=\"eslint-error\" data-tip=\"Curly braces are unnecessary here.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-curly-brace-presence)</span>\"><span class=\"token punctuation\">{</span><span class=\"token string\">'foo'</span><span class=\"token punctuation\">}</span></mark></span><span class=\"token punctuation\">></span></span><mark class=\"eslint-error\" data-tip=\"Curly braces are unnecessary here.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-curly-brace-presence)</span>\"><span class=\"token punctuation\">{</span><span class=\"token string\">'Hello World'</span><span class=\"token punctuation\">}</span></mark><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">App</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">App</span></span> <span class=\"token attr-name\">prop</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>foo<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Hello World</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">App</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-filename-extension": {
"name": "react/jsx-filename-extension",
"value": "off",
"description": "限制文件后缀",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-fragments": {
"name": "react/jsx-fragments",
"value": ["error", "syntax"],
"description": "必须使用 <></> 而不是 React.Fragment",
"reason": "<></> 不需要额外引入 Fragment 组件",
"badExample": "<mark class=\"eslint-error\" data-tip=\"Prefer fragment shorthand over React.Fragment<br/><span class='eslint-error-rule-id'>eslint(react/jsx-fragments)</span>\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span></mark><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">React.Fragment</span></span> <span class=\"token attr-name\">key</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span>\n <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-handler-names": {
"name": "react/jsx-handler-names",
"value": "off",
"description": "handler 的名称必须是 onXXX 或 handleXXX",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-key": {
"name": "react/jsx-key",
"value": ["error", { "checkFragmentShorthand": true }],
"description": "数组中的 jsx 必须有 key",
"reason": "",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>ul</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <mark class=\"eslint-error\" data-tip=\"Missing &quot;key&quot; prop for element in iterator<br/><span class='eslint-error-rule-id'>eslint(react/jsx-key)</span>\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>li</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>li</span><span class=\"token punctuation\">></span></span></mark>\n <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>ul</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <mark class=\"eslint-error\" data-tip=\"Missing &quot;key&quot; prop for element in iterator. Shorthand fragment syntax does not support providing keys. Use React.Fragment instead<br/><span class='eslint-error-rule-id'>eslint(react/jsx-key)</span>\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span></span><span class=\"token punctuation\">></span></span></mark>\n <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>ul</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>li</span> <span class=\"token attr-name\">key</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>li</span><span class=\"token punctuation\">></span></span>\n <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>ul</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">value</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">React.Fragment</span></span> <span class=\"token attr-name\">key</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>value<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span>\n <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-max-depth": {
"name": "react/jsx-max-depth",
"value": "off",
"description": "限制 jsx 层级",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-bind": {
"name": "react/jsx-no-bind",
"value": "off",
"description": "jsx 中禁止使用 bind",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-comment-textnodes": {
"name": "react/jsx-no-comment-textnodes",
"value": "error",
"description": "禁止在 jsx 中使用像注释的字符串",
"reason": "",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"><mark class=\"eslint-error\" data-tip=\"Comments inside children section of tag should be placed inside braces<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-comment-textnodes)</span>\">// empty div</mark></div>;\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"><mark class=\"eslint-error\" data-tip=\"Comments inside children section of tag should be placed inside braces<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-comment-textnodes)</span>\">/* empty div */</mark></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">;\n</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span><span class=\"token comment\">/* empty div */</span><span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token operator\"><</span>div <span class=\"token comment\">/* empty div */</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-constructed-context-values": {
"name": "react/jsx-no-constructed-context-values",
"value": "error",
"description": "禁止使用不稳定的值作为 Context.Provider 的 value",
"reason": "",
"badExample": "<span class=\"token keyword\">function</span> <span class=\"token function\">Foo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Bar.Provider</span></span> <span class=\"token attr-name\">value</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><mark class=\"eslint-error\" data-tip=\"The object passed as the value prop to the Context provider (at line 2) changes every render. To fix this consider wrapping it in a useMemo hook.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-constructed-context-values)</span>\"><span class=\"token punctuation\">{</span> foo<span class=\"token punctuation\">:</span> <span class=\"token string\">'bar'</span> <span class=\"token punctuation\">}</span></mark><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Bar</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">Bar.Provider</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>",
"goodExample": "<span class=\"token keyword\">function</span> <span class=\"token function\">Foo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">const</span> foo <span class=\"token operator\">=</span> <span class=\"token function\">useMemo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> foo<span class=\"token punctuation\">:</span> <span class=\"token string\">'bar'</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Bar.Provider</span></span> <span class=\"token attr-name\">value</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>foo<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Bar</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">Bar.Provider</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-duplicate-props": {
"name": "react/jsx-no-duplicate-props",
"value": "error",
"description": "禁止出现重复的 props",
"reason": "",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>foo<span class=\"token punctuation\">\"</span></span> <mark class=\"eslint-error\" data-tip=\"No duplicate props allowed<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-duplicate-props)</span>\"><span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>bar<span class=\"token punctuation\">\"</span></span></mark> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>foo<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-leaked-render": {
"name": "react/jsx-no-leaked-render",
"value": "off",
"description": "使用 && 渲染组件时,禁止条件是 0 '' 或 NaN",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-literals": {
"name": "react/jsx-no-literals",
"value": "off",
"description": "禁止在 jsx 中出现字符串",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-script-url": {
"name": "react/jsx-no-script-url",
"value": "error",
"description": "禁止出现 href=\"javascript:void(0)\"",
"reason": "React 已经有 warning 了,并且会在将来禁止此类属性值",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>a</span> <mark class=\"eslint-error\" data-tip=\"A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML, try using dangerouslySetInnerHTML instead.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-script-url)</span>\"><span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>javascript:void(0);<span class=\"token punctuation\">\"</span></span></mark><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>a</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>a</span>\n <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>#<span class=\"token punctuation\">\"</span></span>\n <span class=\"token attr-name\">onClick</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">e</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n e<span class=\"token punctuation\">.</span><span class=\"token function\">preventDefault</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span></span>\n<span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>a</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-target-blank": {
"name": "react/jsx-no-target-blank",
"value": "off",
"description": "禁止使用 target=\"_blank\"",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-undef": {
"name": "react/jsx-no-undef",
"value": "error",
"description": "禁止使用未定义的组件",
"reason": "",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\"><mark class=\"eslint-error\" data-tip=\"&apos;Foo&apos; is not defined.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-undef)</span>\">Foo</mark></span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token keyword\">import</span> Foo <span class=\"token keyword\">from</span> <span class=\"token string\">'./Foo'</span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-no-useless-fragment": {
"name": "react/jsx-no-useless-fragment",
"value": "error",
"description": "禁止无意义的 Fragment 组件",
"reason": "",
"badExample": "<mark class=\"eslint-error\" data-tip=\"Fragments should contain more than one child - otherwise, there’s no need for a Fragment at all.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-useless-fragment)</span>\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span></span><span class=\"token punctuation\">></span></span></mark><span class=\"token punctuation\">;</span>\n<mark class=\"eslint-error\" data-tip=\"Fragments should contain more than one child - otherwise, there’s no need for a Fragment at all.<br/><span class='eslint-error-rule-id'>eslint(react/jsx-no-useless-fragment)</span>\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span></span><span class=\"token punctuation\">></span></span></mark><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">foo</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">React.Fragment</span></span> <span class=\"token attr-name\">key</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>foo<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-pascal-case": {
"name": "react/jsx-pascal-case",
"value": "error",
"description": "组件的名称必须符合 PascalCase",
"reason": "",
"badExample": "<span class=\"token tag\"><mark class=\"eslint-error\" data-tip=\"Imported JSX component FOO must be in PascalCase<br/><span class='eslint-error-rule-id'>eslint(react/jsx-pascal-case)</span>\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">FOO</span></span> <span class=\"token punctuation\">/></span></mark></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><mark class=\"eslint-error\" data-tip=\"Imported JSX component FOO_BAR must be in PascalCase<br/><span class='eslint-error-rule-id'>eslint(react/jsx-pascal-case)</span>\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">FOO_BAR</span></span> <span class=\"token punctuation\">/></span></mark></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">FooBar</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-props-no-spreading": {
"name": "react/jsx-props-no-spreading",
"value": "off",
"description": "禁止使用 {...props}",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-sort-props": {
"name": "react/jsx-sort-props",
"value": "off",
"description": "props 必须按字母排序",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-uses-react": {
"name": "react/jsx-uses-react",
"value": "error",
"description": "修复 React 被误报为未使用的变量的问题(仅在开启 no-unused-vars 时有效)",
"reason": "",
"badExample": "<span class=\"token comment\">/* eslint no-unused-vars: \"error\", react/jsx-uses-react: \"off\" */</span>\n<span class=\"token keyword\">import</span> <mark class=\"eslint-error\" data-tip=\"&apos;React&apos; is defined but never used.<br/><span class='eslint-error-rule-id'>eslint(no-unused-vars)</span>\">React</mark> <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token comment\">/* eslint no-unused-vars: \"error\" */</span>\n<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/jsx-uses-vars": {
"name": "react/jsx-uses-vars",
"value": "error",
"description": "修复 no-unused-vars 不检查 jsx 的问题",
"reason": "",
"badExample": "<span class=\"token comment\">/* eslint no-unused-vars: \"error\", \"react/jsx-uses-vars\": \"off\" */</span>\n<span class=\"token keyword\">import</span> <mark class=\"eslint-error\" data-tip=\"&apos;Foo&apos; is defined but never used.<br/><span class='eslint-error-rule-id'>eslint(no-unused-vars)</span>\">Foo</mark> <span class=\"token keyword\">from</span> <span class=\"token string\">'./Foo'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token comment\">/* eslint no-unused-vars: \"error\" */</span>\n<span class=\"token keyword\">import</span> Foo <span class=\"token keyword\">from</span> <span class=\"token string\">'./Foo'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-access-state-in-setstate": {
"name": "react/no-access-state-in-setstate",
"value": "off",
"description": "禁止在 setState 中使用 this.state",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-adjacent-inline-elements": {
"name": "react/no-adjacent-inline-elements",
"value": "off",
"description": "两个 inline 元素之间必须有空格,否则视觉上它们就贴在一起了",
"reason": "这是样式的问题,不应该由空格约束",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-array-index-key": {
"name": "react/no-array-index-key",
"value": "off",
"description": "禁止使用数组的索引作为 key",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-arrow-function-lifecycle": {
"name": "react/no-arrow-function-lifecycle",
"value": "off",
"description": "类组件中的生命周期函数不要使用箭头函数",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": true,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-children-prop": {
"name": "react/no-children-prop",
"value": "error",
"description": "禁止将 children 作为一个 prop",
"reason": "",
"badExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span> <mark class=\"eslint-error\" data-tip=\"Do not pass children as props. Instead, nest children between the opening and closing tags.<br/><span class='eslint-error-rule-id'>eslint(react/no-children-prop)</span>\"><span class=\"token attr-name\">children</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Hello World<span class=\"token punctuation\">\"</span></span></mark> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span> <mark class=\"eslint-error\" data-tip=\"Do not pass children as props. Instead, nest children between the opening and closing tags.<br/><span class='eslint-error-rule-id'>eslint(react/no-children-prop)</span>\"><span class=\"token attr-name\">children</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Bar</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">}</span></span></mark> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Hello World</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Foo</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span><span class=\"token class-name\">Bar</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span><span class=\"token class-name\">Foo</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-danger": {
"name": "react/no-danger",
"value": "off",
"description": "禁止使用 dangerouslySetInnerHTML",
"reason": "",
"badExample": "",
"goodExample": "",
"fixable": false,
"extendsBaseRule": "",
"requiresTypeChecking": false
},
"react/no-danger-with-children": {
"name": "react/no-danger-with-children",
"value": "error",
"description": "禁止在使用了 dangerouslySetInnerHTML 的组件内添加 children",
"reason": "",
"badExample": "<mark class=\"eslint-error\" data-tip=\"Only set one of `children` or `props.dangerouslySetInnerHTML`<br/><span class='eslint-error-rule-id'>eslint(react/no-danger-with-children)</span>\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span> <span class=\"token attr-name\">dangerouslySetInnerHTML</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span> __html<span class=\"token punctuation\">:</span> <span class=\"token string\">'Foo'</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Hello World</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>div</span><span class=\"token punctuation\">></span></span></mark><span class=\"token punctuation\">;</span>",
"goodExample": "<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>div</span> <span class=\"token attr-name\">dangerouslySetInnerHTML</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span> __html<span class=\"token punctuation\">:</span> <span class=\"token string\">'Foo'</span> <span class=\"token punctuation