Mein Menü sieht derzeit so aus:
<Menu>
<MenuItem text="link1" />
<MenuItem text="link2" />
</Menu>
Zur Integration mit react-router-dom
habe ich wie folgt modifiziert:
<Menu>
<NavLink to="link1">
<MenuItem text="link1" />
</NavLink>
<NavLink to="link2">
<MenuItem text="link2" />
</NavLink>
</Menu>
Meine MenuItem
Komponente unterstützt das Styling des derzeit "aktiven" Links wie folgt:
<MenuItem active text="link1" />
Wie integriere ich das "aktive" Routenstyling mit react-router-dom
?
Gibt es einen booleschen Wert, den ich wie folgt einstellen kann?
<MenuItem active={isRouteActive} text="link1" />
Bearbeiten: MenuItem
ist eine Komponente von Blueprintjs. Wenn die active
Requisite festgelegt ist, werden möglicherweise einige interne Stilregeln auf die Komponente angewendet. Ich könnte die activeClassName
Requisite verwenden, NavLink
aber ich möchte das CSS einer Komponente eines Drittanbieters nicht replizieren.
Lösung des Problems
Am Ende habe ich es herausgefunden. Ich habe meine eigene Komponente erstellt, indem ich die Zusammensetzung der Route
Komponente verwendet habe
const MenuItemExt = ({ icon, text, to, activeOnlyWhenExact }) => {
return (
<Route
path={to}
exact={activeOnlyWhenExact}
children={({match, history}) => (
<MenuItem
active={match}
icon={icon}
onClick={() => {
history.push(to);
}}
text={text}
/>
)}
/>
);
};
Keine Kommentare:
Kommentar veröffentlichen