标签的 EsLint 规则

CR7*_*CR7 14 javascript reactjs

我有个问题

我的形象

我的 esLint 规则:

"jsx-a11y/label-has-for": [ 2, {
      "components": [],
      "required": {
        "every": [ "nesting", "id" ]
      },
      "allowChildren": true
    }],
Run Code Online (Sandbox Code Playgroud)

我只想解决这个错误,或者修复,请帮帮我

错误消息:表单标签必须与控件相关联。(jsx-a11y/label-has-related-control)

JSX代码:

          <input
                type="checkbox"
                id="checkbox-2"
                className="checkbox__input"
            />
            <label
                htmlFor="checkbox-2"
                className="checkbox__label"
            />
Run Code Online (Sandbox Code Playgroud)

Nis*_*hah 14

我通过在我的eslint文件中添加以下几行来解决它

{
    ....
    "rules": {
      "jsx-a11y/label-has-associated-control": ["error", {
        "required": {
          "some": ["nesting", "id"]
        }
      }],
      "jsx-a11y/label-has-for": ["error", {
        "required": {
          "some": ["nesting", "id"]
        }
      }]
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

don't forget to restart your local server在添加这些行之后。

它仅在label htmlFor(React) or for(HTML)input id匹配时才起作用。

<label htmlFor="temp-id">Label</label>
<input type="text" id="temp-id" />
Run Code Online (Sandbox Code Playgroud)

https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/302#issuecomment-425512505


小智 12

案例1:您可以在标签内输入

  <label>
      <input type="text"/>
  </label>
Run Code Online (Sandbox Code Playgroud)

情况 2:使用 htmlFor

   <label htmlFor="first-name">
        First Name
   </label>
   <input type="text" id="first-name" />
Run Code Online (Sandbox Code Playgroud)

您可以通过此页面查看规则的详细信息:

  • 在我的代码中,我必须结合两种情况:1)在标签内使用输入并使用 htmlFor (它仅适用于没有任何属性的标签) (12认同)

CR7*_*CR7 -6

所以首先,对于这条规则,我需要这样写:"jsx-a11y/label-has-associated-control": "off",

那么我需要关闭这个:"jsx-a11y/label-has-for":"off",

毕竟我需要将其移动到文件的顶部,因为在我的情况下,如果我不将其移动到顶部,我的规则就不起作用。

  • 删除规则并不是解决问题的办法 (2认同)