2017-06-26 5 views
1

enter image description hereReact Bootstrap-modalen Komponenten dupliziert

Aus irgendeinem Grund die modale mehr als ein Mal wiedergegeben wird, manchmal 2 oder 3. Dann, nach ein paar Sekunden die aditionals modals automatisch entfernt werden.

Die modal durch eine Strecke geöffnet ist, so somethig wie dies ich tue:

const ModalWrapper = (props) => { 
    return (
    <Modal 
     show={props.showModal} 
     onHide={props.hide} 
    > 
    ... 
    </Modal> 
); 
}; 

class ComponentPage extends React.Component { 
    constructor(props) { 
    super(props); 

    this.state = { 
     showModal: true, 
    }; 
    } 

    @autobind 
    closeModal() { 
    this.props.history.goBack(); 
    this.setState({showModal: false}); 
    } 

    render() { 
    return (
     <ModalWrapper 
     {...this.state} 
     hide={this.closeModal} 
     /> 
    ); 
    } 
} 
+0

Modal weggehen automatisch oder nachdem Sie etwas Aktion wie Öffnen von Modal, Knopf klicken usw.? – demonofthemist

+0

@demonofthemist Wenn ich die Route zum Laden der ComponentPage ändere, wird das Modal 2 oder 3 Mal geöffnet, nach ein paar Sekunden verschwindet das Modal automatisch und es bleibt nur noch eins übrig. –

Antwort

1

Normalerweise ist dies geschieht, wenn die Modal ist innerhalb einer Umhüllung, zum Beispiel:

const ChildrenWrapper = ({children}) => { 
    return <div>{children}</div> 
} 

Und die modal ist ein Kind in der Verpackung:

const ModalWrapped= ({}) => { 
return <ChildrenWrapper> 
      <Modal show={true}>some content</Modal> 
     </ChildrenWrapper> 
} 

als App:

const App =() => { 
    return <ModalWrapped/> 
} 

Das Ergebnis ist, dass die Instanz der Modal 2 mal in dem virtuellen dom gerendert wird.

Verwandte Themen