Модальное окно Reactstrap под iframe в приложении response.js

Я создаю приложение в react.js, и я использовал response-frame-component для создания iframe. В этом iframe я написал код для Modal (reactstrap). Это модальное окно открывается в окне моего приложения. Я хочу, чтобы он открывался только в этом iframe.

Создана соответствующая проблема в репозитории responsestrap git. Сообщите мне, если вы знаете способ перезаписать объект документа Modal. выпуск: https://github.com/reactstrap/reactstrap/issues/1326

ссылка на приложение: https://q8lp3kyr5w.codesandbox.io/

код: https://codesandbox.io/s/q8lp3kyr5w

Компонент

import React from "react";
import ReactDOM from "react-dom";
import { Modal, ModalBody, Button } from "reactstrap";
import Frame from "react-frame-component";
import "bootstrap/dist/css/bootstrap.min.css";
import "./styles.css";

class ModalComp extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      modal: false
    };

    this.toggle = this.toggle.bind(this);
  }

  toggle() {
    this.setState({ modal: !this.state.modal });
  }

  render() {
    return (
      <div>
        <Frame>
          <Button onClick = {this.toggle}>Toggle Modal</Button>
          <Modal isOpen = {this.state.modal} toggle = {this.toggle}>
            <ModalBody>
              <br />
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum,
              ipsam? A id numquam inventore, cumque debitis similique eos
              maiores provident? Sed alias odit fuga, repellat ducimus
              voluptatum aliquid quis pariatur?
            </ModalBody>
          </Modal>
        </Frame>
      </div>
    );
  }
}

const App = () => (
  <div>
    <b>How to open modal in this iframe?</b>
    <ModalComp />
  </div>
);

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

css:

.App {
  font-family: sans-serif;
  text-align: center;
}

Вы должны размещать свой код здесь, а не на стороннем веб-сайте, который может в какой-то момент удалить его.

Gwen 18.12.2018 13:04

Вы пробовали записать и Button, и Modal как один компонент и использовать его внутри Frame?

Praveenkumar Kalidass 18.12.2018 13:27

Да, пробовал. Я также просмотрел исходный код Modal reactstrap. В исходном коде Modal использует document.body для добавления модального окна в конец тела. response-frame-component может предоставить собственный объект документа, но мы снова не можем передать это модальному модулю reactstrap. Я попытался использовать reactstrap, используя cdn в iframe, но не смог заставить это работать. Я думаю, что использование сценария cdn может сработать, нужно попробовать еще.

Mukesh Chauhan 19.12.2018 05:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
3
2 185
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

На данный момент в reactstrap нет возможности передавать документ в качестве реквизита. Вы можете использовать реактивно-модальный. См. Ссылку на проблему на github, которую поделили в вопросе.

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