Почему response-router правильно обрабатывает регулярное выражение `path`, но в то же время выдает ошибку? - PullRequest
0 голосов
/ 20 мая 2018

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

<Route exact path={/^\/.+$/} component={() =>
  <div><img src="../../../assets/AndreyBogdanov2.jpg" className="me" /></div>
} />

Это регулярное выражение соответствует всем строкам, которые имеют любой символ после косой черты в начале.И все работает как положено, однако в консоли я вижу ошибку:

Warning: Failed prop type: Invalid prop `path` of type `regexp` supplied to `Route`, expected `string`.
    in Route (created by App)
    in App
    in Router (created by BrowserRouter)
    in BrowserRouter

Не то чтобы я жалуюсь, но хотелось бы знать, как это получается?

В документах для пропуска path говорится, что это должен быть любой URL, который понимает path-to-regexp, а в документах path-to-regexp говорится, что регулярное выражение является допустимым параметром.Таким образом, в основном, это PropTypes компонента, который выдает ошибку, когда он встречает что-то отличное от строки.

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Это потому, что он может принимать только строковое значение.Вам также нужно вставить что-то, что path-to-regexp может прочитать, как описано в React Router Training .Вы можете посмотреть, как написать действительные регулярные выражения в их хранилище здесь .

0 голосов
/ 20 мая 2018

Это работает, потому что единственное, что Route делает, это передает объект path-to-regexp, который поддерживает RegExp экземпляры.

PropTypes проверка на основе выдает предупреждения, но не останавливаетсясвойства фактически обрабатываются.

В этом случае это, вероятно, ошибка.PropType для path написано неправильно, чтобы соответствовать документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...