2017-02-06 8 views
0

In meiner App habe ich viele Tasten. Wenn Sie auf eine der Schaltflächen klicken, wird ein Popover mit einigen Steuerelementen (also Ereignissen) geöffnet.React einzelne Popover-Komponente

Ursprünglich wollte ich eine Popover-Komponente in jede Button-Komponente einfügen, aber ich brauche sie nicht wirklich, weil in jedem Moment nur ein Popover angezeigt wird.

Und ich bin wirklich fest, wie es geht. Wie kann ich mit dem Anzeigen und Schließen von Popover umgehen? Wo soll ich es hinstellen?

p.s. Ich verwende ReactJS teilweise im Projekt.

+0

Setzen Sie Ihr Popover in einen Vollbild-Container div mit transparentem Hintergrund. container div blockiert den Klick auf Schaltflächen, dann schließt man das Popover, wenn man auf container div klickt. Checkout [Material-UI-Popover] (http://www.material-ui.com/#/components/popover) – Abhishek

Antwort

0

Sie könnten eine übergeordnete Komponente erstellen, die das Popover und alle Schaltflächen enthält. Die übergeordnete Komponente hat den Status, der die Anzeigeeigenschaft des Popover angibt.

class Parent extends Component { 
    constructor() { 
    this.state = { displayPopover: false }; 

    this.togglePopover = this.togglePopover.bind(this); 
    } 

    togglePopover() { 
    this.setState({ displayPopover: !this.state.displayPopover }); 
    } 

    render() { 
    return (
     <div> 
     <div style={{ display: this.state.displayPopover ? 'block' : 'none' }} /> 
     <button onClick={this.togglePopover}>Toggle 1</button> 
     <button onClick={this.togglePopover}>Toggle 2</button> 
     </div> 
    ); 
    } 
} 
+0

Was aber, wenn ich einen einzelnen Button mit demselben Verhalten in einem anderen Teil der App benötige? Ich muss einen anderen Eltern-Container für diese Schaltfläche erstellen? Daher muss ich daran denken, das Popover mit einem Button zu versehen. Ist es möglich, diese Dinge zu vereinfachen und zu trennen? Ich meine, wann immer ich einen solchen Knopf benutzen möchte, stelle ich ihn einfach

+0

Sie können Ihre Schaltfläche in einer untergeordneten Komponente Ihrer übergeordneten Klasse rendern und die Methode onClick über Ihre untergeordneten Elemente übergeben. Wenn Ihre Schaltfläche keine untergeordnete Komponente der übergeordneten Komponente sein kann, sollten Sie nach einem erweiterten Zustandshandler wie MobX oder Redux suchen. –

Verwandte Themen