React + PropTypes и ESlint error: как проверить реквизиты обратного вызова - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть Route из react-router:

<Route
    path="/:url*"
    exact
    strict
    render={props => <Redirect to={`${props.location.pathname}/`} />}
/>

Он просто добавляет косую черту к маршрутам, у которых ее нет.

Но ESLint сообщает об ошибке на props.location.pathname, так как props.location и props.location.pathname не проверяются с PropTypes.

Как я могу их проверить? Есть ли способ?

ПРИМЕЧАНИЕ: я не хочу игнорировать правило: я хочу исправить его, явно проверяя реквизиты!

1 Ответ

0 голосов
/ 26 апреля 2018

Хорошо, поэтому, следуя комментарию @Tiago Coelho к моему вопросу, вот решение:

// RedirectToTrailingSlash.jsx
import React from 'react';
import PropTypes from 'prop-types';
import { Redirect } from 'react-router-dom';

const RedirectToTrailingSlash = props => (
  <Redirect to={`${props.location.pathname}/`} />
);

RedirectToTrailingSlash
  .propTypes = { location: PropTypes.shape({ pathname: PropTypes.string.isRequired }).isRequired };

export default RedirectToTrailingSlash;

А это переписано Route:

// YourComponent.jsx
...
<Route
    path="/:url*"
    exact
    strict
    component={RedirectToTrailingSlash}
/>
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...