Я использую withRouter так:
const SubMenu = props => (
<div className = "subMenu">
<h2>{props.location.pathname}</h2>
</div>
);
export default withRouter(SubMenu);
Как я могу получить имя активного компонента вместо пути?
Большое спасибо за ваш быстрый ответ и ценный вклад. У меня легкий доступ к компонентам, и они отображаются должным образом. Но имя пути и имя компонента полностью разделены и могут быть совершенно разными. Если не считать таблицы поиска, которая бы соответствовала друг другу, или чтобы каждый компонент был обернут в хранилище для обновления всякий раз, когда они активны, могу ли я добавить свойство в Route, например <Route path = "/ login" name = "Login Form" />, что бы сработало? Я действительно пробовал это, и он не отображается ни на месте, ни в соответствии.
Боюсь, я до сих пор не понимаю проблемы. Можете ли вы предоставить больше кода? Еще одна идея, которую я имел в виду, - это сослаться на this.constructor.name
(см. кодовая песочница), но количество вариантов использования, когда это подходит, ограничено.
Это прекрасно работает. Жаль, что он не работает с функциональными компонентами. Отправьте ответ, и я его приму.
IIRC невозможно получить какую-либо ссылку на компонент (который является функцией) из хранилища, потому что response-router использует хранилище правильно, то есть хранит только сериализуемые данные. И компонент может даже не иметь имени, например, когда это функция экспорта по умолчанию. Что можно сделать, так это повторно использовать конфигурацию маршрутизатора в качестве модуля и разрешать маршруты на месте, но я не уверен, что response-router предоставляет этот API. И в качестве примечания: у меня такое чувство, что вы решаете неправильную проблему; возможно, знание имени компонента и его использование - это длинный путь, а есть более короткий.