2016-08-11 1 views
0

Ich möchte, dass der OverlayTrigger das Popover durch Klicken sowohl auf die Schaltfläche als auch auf die Schaltfläche verwerfen kann. Wenn ich jedoch den Trigger auf trigger = {['click', 'focus']} setze, würde der Popover blinken und verschwinden, wenn ich auf die Schaltfläche klicke, um ihn anzuzeigen.React Bootstrap Popover blinkt, wenn ich auf OverlayTrigger klicke

getInitialState() { 
    return { show: true }; 
}, 

classificationPopover() { 
    return (
     <ReactBootstrap.Popover id="popover" title="Popover"> 
      Pop! 
     </ReactBootstrap.Popover> 
    ); 
}, 

render: function() { 
    return (
     <div> 

      <ReactBootstrap.OverlayTrigger 
       trigger={['click', 'focus']} // Here is probably the tricky part 
       placement="right" 
       overlay={this.classificationPopover()}> 
        <ReactBootstrap.Button 
         bsStyle="default" 
         className="btn btn-default btn-circle"> 
          <div className="btn-circle-text">?</div> 
        </ReactBootstrap.Button> 
      </ReactBootstrap.OverlayTrigger> 

     </div> 
    ) 
} 

fiddle

Dies geschieht, wenn Sie außerhalb der Schaltfläche klicken, und Sie dann auf die Schaltfläche klicken. Aber wenn Sie nur auf die Schaltfläche klicken und das Popover mit der Schaltfläche schließen, funktionieren die Dinge gut.

Ich weiß, dass das Hinzufügen einer RootClose-Eigenschaft in OverlayTrigger und nur "Klicken" für Trigger würde funktionieren, aber für meine Arbeit Anforderung darf ich nicht RootClose verwenden, also brauche ich eine andere Lösung. Vielen Dank: D

Antwort

0

Wenn Sie versuchen, Trigger mit OverlayTrigger zu verwenden, sollten Sie stattdessen Overlay verwenden.

Die OverlayTrigger Komponente ist für die meisten Anwendungsfälle, sondern als höhere Abstraktionsebene kann es die Flexibilität fehlt benötigt nuancierter oder individuelle Verhalten in Ihre Overlay-Komponenten zu bauen. Für dieser Fälle kann es hilfreich sein, auf den Trigger zu verzichten und die Overlay Komponente direkt zu verwenden.

Verwandte Themen