Wie kann ich einen aktiven Link in react-router v4 gestalten?

9

In react-router v3 hatten wir activeStyle und activeClassName, um den aktiven Link

zu stylen

wir könnten so etwas tun

%Vor%

Ich möchte wissen, wie ich dasselbe in v4 machen kann?

    
Ramtin Khalatbari 04.02.2017, 18:51
quelle

5 Antworten

12

Verwenden Sie NavLink anstelle von Link. Es ist nicht dokumentiert, aber es funktioniert wie erwartet. Ссылка

UPDATE 17.05.2017:

Ссылка

    
Sergey Reutskiy 05.02.2017 19:45
quelle
3

Dieses Beispiel aus der benutzerdefinierten Link-Dokumentation des reactor-route v4 unterstützt Sie dabei:

%Vor%

In Ihrem Fall könnten Sie folgende Komponente erstellen:

%Vor%

Und dann benutze es wie:

%Vor%     
glennreyes 04.02.2017 20:06
quelle
2

Sie können es mit NavLink in react-router v4

machen %Vor%     
Gapur Kassym 21.09.2017 09:08
quelle
0

Alles funktioniert immer noch gleich. Read-router-dom v4 ersetzt jedoch Link durch NavLink

import { NavLink as Link } from 'react-router-dom'; ist auch in Ordnung. Hinweis: Navlinks sind standardmäßig aktiviert, sodass Sie a:active oder activeStyle={{color: 'red'}}

formatieren können     
Alisher Musurmonv 11.11.2017 18:37
quelle
0
  

Wenn Sie auf ein Problem stoßen, bei dem das Nav-Menü funktioniert, außer dass es nicht ordnungsgemäß aktualisiert wird wenn Sie auf Links klicken und sich die Route ändert, aber es funktioniert, wenn Sie F5 drücken, können Sie dies tun:

Dies tritt wahrscheinlich auf, weil Sie Redux verwenden, das eine shouldComponentUpdate Lifecycle-Methode für die Funktion connect hat. Wahrscheinlich haben Sie Ihre Nav-Komponente in connect eingepackt. Das ist alles gut. shouldComponentUpdate ruiniert dein Leben.

Um es zu beheben, bringen Sie den Router einfach in Ihre mapStateToProps Funktion:

%Vor%

Wenn Sie nicht sicher sind, woher state.router kommt, kommt es aus der Datei, in der Sie Ihre Reduzierungen kombinieren, und Sie sehen etwa Folgendes:

%Vor%

Hier ist etwas HTML und CSS für einen hübschen Baller Nav Link:

  

HTML

%Vor%

HINWEIS: Wenn Sie mit "/" verknüpfen, setzen Sie exact prop auf NavLink.

  

CSS

%Vor%

Beachten Sie activeStyle im HTML-Markup. Nur so konnte ich die Farbe des Textes auf der aktiven Route / Verbindung ändern. Es hat nicht funktioniert, wenn ich color: teal; in die activeRoute CSS Klasse gesetzt habe. Öffnen Sie diese in einem anderen Tab: Ссылка

Wenn Sie nicht wissen, warum ich rem anstelle von px verwendet habe. Dies ist eine großartige Gelegenheit für Sie, die Webzugänglichkeit und die Basis font-size: 10px; zu erforschen.

Bleib fit und hab Spaß.

    
agm1984 12.03.2018 22:13
quelle