2016-04-19 26 views
1

Wenn ich react verwende, habe ich Komponenten, die sich auf der Seite ändern, abhängig davon, auf welcher Route der Benutzer navigiert. Gibt es eine Möglichkeit festzustellen, ob eine Komponente gerade angezeigt wird? Wenn sich der Benutzer beispielsweise auf einer Seite befindet, die nicht die Homepage ist, wird die Schaltfläche "Nach Hause gehen" angezeigt, aber ich möchte sie entfernen, wenn der Benutzer zur Startseite zurückkehrt (das ist nicht ganz so einfach, aber das ist es) die allgemeine Idee)Reagieren - kann ich herausfinden, ob eine Komponente gerade sichtbar ist

+0

Welche Komponente prüfen Sie in Ihrem Beispiel auf Sichtbarkeit? Ich denke, du bist drüben denkst das .. haben unterschiedliche Komponenten für verschiedene Routen und nur in die Komponenten schreiben, die Sie in jedem sein möchten. Wenn Sie etwas bedingt anzeigen möchten, verwenden Sie einen booleschen Wert. – azium

+0

Ich habe eine Komponente namens header, die am Anfang jeder Route angezeigt wird, es hat 3 Schaltflächen darin verschachtelt, aber auf der Homepage würde ich es lieber nur 2 der 3 – LucyViolet

+0

'{! Location.pathname.includes ('/home ') && } ' – azium

Antwort

0

Ich nehme an, Ihre Schaltflächen sind bereits untergeordnete Komponenten, wenn sie Event-Handler übergeben wurden. Vielleicht ist es an der Zeit, sie ein wenig auszufüllen.

class GoHome extends React.Component { 
    constructor(props) { 
    super(props); 
    } 
    state = { 
    visible: "shown" 
    } 
    // While the code here would execute just prior to render, 
    // which I assume would happen during page load and after url change, 
    // you could place it in a function the serves as a callback 
    // to any route change event. 
    componentWillMount =() => { 
    // Please check this regex. 
    var re = /\/home/i; 
    if (re.test(window.location.href)) { 
     this.setState({ 
     visible: "not-shown" 
     }); 
    }; 
    } 
    // Using Google's Material Icons as an example. 
    render() { 
    let myClass = "material-icons " + {this.state.visible}; 
    return (
     <i className={myClass}>home</i> 
    ) 
    } 
} 

CSS-Klassen.

Im Wesentlichen unterscheidet sich die CSS-Klasse der Schaltfläche je nach der aktuellen Browser-URL.

Verwandte Themen