не может объявить переменные url и path в useRouteMatch - PullRequest
1 голос
/ 25 марта 2020

Теперь я делаю так:

constructor(props) {
    super(props);
    let r = useRouteMatch();
    this.path = r.path;
    this.url = r.url;
}

, но это не работает и выдает ошибки: URL не определен, если я использую их в render ()
Этот код указан в документации:

let {path, url} = useRouteMatch();

Работает для функционального программирования, а не для класса. Как объявить эти переменные в этой строке? Или что-то

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

React hooks только работают в функциональных компонентах. Вам придется либо напрямую визуализировать компонент под Route component, children или render опорой, либо украсить его withRouter HO C и вытащить их из match prop.

У вас будет доступ к совпадающим объектам в разных местах:

  • Компонент маршрута как this.props.match
  • Визуализация маршрута как ({ match }) => ()
  • Маршрут детей как ({ match }) => ()
  • с Маршрутом как this.props.match
const { match: { path, url } } = this.props;

withRouter match

0 голосов
/ 25 марта 2020

Функция useRouteMatch() на самом деле является кастомом React hook . Хуки будут работать только с функциональными компонентами, и, следовательно, вы не можете использовать это с компонентами класса. Вы можете прочитать больше о том, как использовать их здесь .

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