Как исправить JSX-a11y/anchor-is-valid при использовании компонента Link в React?

В приложении React

<Link to={`/person/${person.id}`}>Person Link</Link>

приводит к следующей ошибке eslint

The href attribute is required on an anchor. Provide a valid, navigable address as the href value jsx-a11y/anchor-is-valid

компонент Link приводит к допустимому атрибуту href.

<a href="#/person/2">Person Link</a>

в чем смысл этой ошибки? Как это исправить?

любая помощь была бы очень признательна!

3 ответов


на Link компонент генерирует href атрибут таким образом, в конечном теге якоря действителен с точки зрения доступности. Добавить исключение to .eslintrc:

{
  "rules": {
    "jsx-a11y/anchor-is-valid": [ "error", {
      "components": [ "Link" ],
      "specialLink": [ "to" ]
    }]
  }
}

кроме того, существует та же проблема с ответом на GitHub.


когда я импортирую его с другим именем, отличным от Link, eslint не жалуется.

import React from 'react';
import RLink from 'react-router-dom/Link';
import Button from 'material-ui/RaisedButton';

const Page = () => (
  <div>
        <h2>Test Header</h2>
        <RLink className="heading-btn" to="/to/something">
          <Button primary label="Button" />
        </RLink>
  </div>
);

export default Page;

возможно, вы хотели поставить backticks вместо одинарных кавычек, чтобы создать литерал шаблона. Попробуйте следующее:

<Link to={`/person/${this.state.id}/edit`}>Edit</Link>