React-Boostrap Modal не отображается - PullRequest
0 голосов
/ 23 октября 2018

У меня возникли некоторые проблемы с реакцией начальной загрузки, которые не отображаются так, как мне бы хотелось.

Это код для модальной модели.И функции showModal и hideModal имеют значение, устанавливая логическое значение showModal в true и false соответственно.

У меня есть import { Button, Modal } from 'react-bootstrap в верхней части моего файла.

Кто-нибудь может мне помочь?

TIA

<Modal show={this.state.showModal} onHide={(e)=> this.hideModal(e)}>
    <Modal.Header closeButton>
        <Modal.Title>Translations</Modal.Title>
    </Modal.Header>
    <Modal.Body>
        <h4>Filter:</h4>
        <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
        <hr />
    </Modal.Body>
    <Modal.Footer>
        <Button onClick={(e)=> this.hideModal(e)}>Close</Button>
    </Modal.Footer>
</Modal>

<Button className="btn btn-primary m-1" onClick={(e)=> { this.showModal(e) }}>
    See modal
</Button>

1 Ответ

0 голосов
/ 23 октября 2018

show prop принимает логическое значение.Когда true Модал покажет себя.Так что внутри вашего обработчика вам нужно установить состояние true/false.

Вы можете проверить здесь с работающей stackblitz demo.

Фрагмент кода

import React, { Component } from 'react';
import { render } from 'react-dom';
import { Button, Modal } from 'react-bootstrap';

//Presentational Components MyModel
const MyModel = (props) => (<Modal show={props.isHidden} onHide={props.onClose}>
  <Modal.Header closeButton>
    <Modal.Title>Translations</Modal.Title>
  </Modal.Header>
  <Modal.Body>
    <h4>Filter:</h4>
    <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
    <hr />
  </Modal.Body>
  <Modal.Footer>
    <Button onClick={props.onClose}>Close</Button>
  </Modal.Footer>
</Modal>);

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      showModal: false
    }
  }

  showModal = (e) => {
    this.setState({ showModal: true })
  }

  hideModal = (e) => {
    this.setState({ showModal: false })
  }

  render() {
    return (
      <div>
        <MyModel isHidden={this.state.showModal} onClose={this.hideModal} />
        <Button className="btn btn-primary m-1" onClick={this.showModal}>Show modal</Button>
      </div>
    );
  }
}
render(<App />, document.getElementById('root'));
...