2016-07-19 13 views
7

Verileri kaydetmek ve kapatmak için bazı form girişleri ve Button içeren Popover bir OverlayTrigger sarma var.React Bootstrap - OverlayTrigger el ile kapama

save(e) { 
    this.setState({ editing: false }) 
    this.props.handleUpdate(e); 
} 

render() { 
    return (
     <OverlayTrigger trigger="click" 
     rootClose={true} 
     onExit={this.save.bind(this) } 
     show={this.state.editing} 
     overlay={ 
      <Popover title="Time Entry"> 
       <FormGroup> 
        <ControlLabel>Data: </ControlLabel> 
        <FormControl type={'number'}/> 
       </FormGroup> 
       <Button onClick={this.save.bind(this) }>Save</Button> 
      </Popover> 
     }> 

Ben rootClose = true var ve benim geri arama onExit işletilirse, ama bir yolunu el ile yakın bindirme görmüyorum. show özniteliğini (tahmin edilebilir şekilde) çalışmayan Bootstrap Modal'dan kullanmaya çalışıyorum.

cevap

17

<OverlayTrigger ref="overlay"... öğeye bir ref ekleyin ve öğe oluşturulduktan sonra hide yöntemini çağırın. Bunu test etmedik ama işe yaramadı:

this.refs.overlay.hide(); 
+0

Mümkün olan yerlerde ref'leri önlemek için yönergemiz var, ancak bu harika çalışıyor. –

+0

Bu tepki-bootstrap 0.30.7 ile çalışmıyor ve 15.4.2 tepki veriyor. Bunu şimdi nasıl başaracağınızı biliyor musunuz? –

+0

Bunu şu anda test edemiyorum ama api hala gizleme yöntemini içerdiği için çalışmalıdır [https://github.com/react-bootstrap/react-bootstrap/blob/v0.30.7/src/OverlayTrigger.js# L221] veya bununla deneyebilirsiniz [https://github.com/react-bootstrap/react-bootstrap/blob/v0.30.7/src/OverlayTrigger.js#L213] – Igorsvee

4

Gizleme işlevi OverlayTrigger üzerinde genel bir işlev değildir. <OverlayTrigger rootClose={true}... öğelerini ve ardından onClick olay tetikleyici aramayı document.body.click() numaralı çağrıyla ayarlayın.

+0

Çok zekice. İyi cevap. –