2017-08-28 22 views
0

react-bootstrapには、リストを含むポップオーバーがあります。リスト項目の1つをクリックすると、モーダルが開きます。モーダルでポップオーバーを閉じるにはどうすればいいですか

モーダルが開いているときにポップオーバーを閉じるにはどうすればいいですか?

私が試した:

  • rootCloseをしかし、あなたのコンポーネントModalが子供であるので、それは両方の閉じ
  • React Bootstrap - How to manually close OverlayTrigger、ポップオーバーとモーダル

    class TypeColumn extends React.Component { 
    constructor(props, context) { 
        super(props, context); 
        this.close = this.close.bind(this); 
    } 
    
    close() { 
        this.refs.overlay.hide(); 
    } 
    
    render() { 
        const popoverClick = (
         <Popover id="popover-trigger-click-root-close"> 
          <ul> 
           <NumberOptions onClick={this.close} /> 
          </ul> 
         </Popover> 
        ); 
    
        return (
         <OverlayTrigger 
          show={show} 
          trigger="click" 
          placement="bottom" 
          overlay={popoverClick} 
          ref="overlay" 
         > 
          <i 
           className={columnTypeIcon} aria-hidden="true" 
          /> 
         </OverlayTrigger> 
        ); 
    } 
    } 
    
    class NumberOptions extends React.Component { 
    constructor(props) { 
        super(props); 
        this.open = this.open.bind(this); 
    
        this.state = { 
         showModal: false, 
        }; 
    } 
    
    open() { 
        this.setState({ showModal: true }); 
        this.props.onClick(); 
    } 
    
    render() { 
        return (
         <div> 
          <li 
           data-value={DATA_TYPES.NUMBER} 
           onClick={this.open} 
          > 
           Options nombre 
          </li> 
    
          <Modal 
           show={showModal} 
           dialogClassName={styles.customModal} 
          > 
          ... 
          </Modal> 
         </div> 
        ); 
    } 
    } 
    
+1

コードを表示し、使用してください。 – Andrew

+0

@Andrew私はコード、任意のアイデアを追加しましたか? – Philippe

+0

'Modal'を' NumberOptions'から動かす必要があります。少なくとも、 'OverlayTrigger'と同じレベルにする必要があります。 – Andrew

答えて

1

を働いていませんNumberOptionsの場合Modalも閉鎖していますNumberOptionsが閉じています。

Modalコンポーネントを少なくともOverlayTriggerと同じレベルに持ち上げる必要があります。

関連する問題