2016-07-19 9 views
7

मैन्युअल रूप से बंद करने के लिए मेरे पास OverlayTriggerPopover लपेटने वाला है जिसमें डेटा को सहेजने और बंद करने के लिए कुछ फॉर्म इनपुट और Button शामिल हैं।प्रतिक्रिया बूटस्ट्रैप - ओवरले ट्रिगर

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> 
     }> 

मैं rootClose = true है, और मेरी कॉलबैक onExit निष्पादित हो जाता है, लेकिन मैं एक तरह से करने के लिए मैन्युअल रूप से बंद ओवरले दिखाई नहीं देता। मैं बूटस्ट्रैप Modal से show विशेषता का उपयोग करने की कोशिश कर रहा हूं (अनुमानतः) काम नहीं करता है।

उत्तर

17

<OverlayTrigger ref="overlay"... तत्व में एक रेफरी जोड़ें और तत्व प्रस्तुत किए जाने के बाद hide विधि को कॉल करें। इसका परीक्षण नहीं किया है लेकिन काम करना चाहिए:

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

हमारे पास जहां संभव हो वहां 'रेफरी' से बचने का निर्देश है, लेकिन यह बहुत अच्छा काम करता है। –

+0

यह प्रतिक्रिया-बूटस्ट्रैप 0.30.7 के साथ काम नहीं करता है और 15.4.2 प्रतिक्रिया करता है। क्या आप जानते हैं कि इसे कैसे पूरा किया जाए? –

+0

मैं अभी इस पर परीक्षण नहीं कर सकता लेकिन इसे काम करना चाहिए क्योंकि एपीआई में अभी भी छिपी विधि है [https://github.com/react-bootstrap/react-bootstrap/blob/v0.30.7/src/OverlayTrigger.js# एल 221], या आप इस के साथ प्रयास कर सकते हैं [https://github.com/react-bootstrap/react-bootstrap/blob/v0.30.7/src/OverlayTrigger.js#L213] – Igorsvee

4

छुपाएं फ़ंक्शन ओवरले ट्रिगर पर सार्वजनिक कार्य नहीं है। <OverlayTrigger rootClose={true}... सेट करें और फिर अपने onClick ईवेंट ट्रिगर पर कॉल करें document.body.click()

+0

बहुत चालाक। अच्छा उत्तर। –

संबंधित मुद्दे