Это мое самое первое приложение reactjs (долгое время Angular dev, желающий увидеть, как выглядит другая сторона). Я хочу добавить «пустой» класс по неактивной ссылке. Я использую react-router-dom
. Вот мое простое меню:
import React from 'react';
import {NavLink} from 'react-router-dom';
const Menu = () => {
return (
<div className="button-group no-gaps">
<NavLink to="/work-items"><a className="button">Work Items</a></NavLink>
<NavLink to="/settings"><a className="button">Settings</a></NavLink>
</div>
);
}
export default Menu;
Как бы я это сделал? Я вижу, что Reaction-router-dom имеет свойство activeClassName в NavLink, но не свойство inactiveClassName?
РЕДАКТИРОВАТЬ: я хочу динамически добавить "полый" класс на inactiveRoute в <a>
внутри <NavLink>
. В приведенном ниже коде маршрут рабочих элементов неактивен.
import React from 'react';
import {NavLink} from 'react-router-dom';
const Menu = () => {
return (
<div className="button-group no-gaps">
<NavLink to="/work-items"><a className="button hollow">Work Items</a></NavLink>
<NavLink to="/settings"><a className="button">Settings</a></NavLink>
</div>
);
}
export default Menu;
РЕДАКТИРОВАТЬ: machineghost указал мне правильный путь с помощью ловушки useLocation. Вот мое рабочее решение.
import React, {useEffect} from 'react';
import {NavLink, useLocation} from 'react-router-dom';
const Menu = () => {
const location = useLocation();
useEffect(()=> {
console.log('Location Changed', location);
}, [location]);
return (
<div className="button-group no-gaps">
<NavLink
to ="/work-items"
className={`button ${location.pathname === '/work-items' ? '':'hollow'}`}
>Work Items</NavLink>
<NavLink
to="/settings"
className={`button ${location.pathname === '/settings' ? '':'hollow'}`}
>Settings</NavLink>
</div>
);
}
export default Menu;