Модальное окно React-Boostrap не отображается

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

Это код модального окна. И функции 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>

Где функции showModal, hideModal? react-bootstrap еще не поддерживает Bootstrap 4.

Zim 23.10.2018 14:24

Еще не знаком с модальными окнами, но помогает ли это с помощью this.setState ({showModal: true}); на вашем onClick?

Lovato 23.10.2018 14:25

Хм. Возможно, я начал с Bootstrap 4. Но я только что запустил npm install [email protected], и все равно ничего не работает.

Oliver Juhl 23.10.2018 15:08

@OliverJuhl не могли бы вы проверить z-индекс вашего модального окна?

sam 23.10.2018 15:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
4
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вы можете проверить здесь рабочую демонстрацию stackblitz.

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

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'));

Я сделал именно это. А у меня не работает. Для меня это просто прозрачный div.

Oliver Juhl 23.10.2018 15:07

не могли бы вы создать демо stackblitz, чтобы я мог попытаться проверить проблему.

Narendra Jadhav 24.10.2018 08:25

Другие вопросы по теме