Как получить доступ к фактическому реагированию на DOM в другом приложении?

У меня есть сценарий использования, когда мне нужно отобразить приложение реагирования в другом приложении (предварительный просмотр пользовательского приложения в случае приложения администратора, как в сценарии). Оба приложения происходят из одного источника, но из разных репозиториев и с разными технологиями. Также мне не нужны функции javascript, для этого достаточно HTML и CSS.

Я пытался использовать импорт HTML как

<link rel="import" href="http://example.com" /> 

и iframe, как это

<iframe  src="http://example.com"></iframe>
$("#myframe").load(function() {
        var slide =document.getElementById("myframe").contentDocument;

    })

оба дают мне один и тот же вид вывода DOM при доступе

<html lang="en">
<head>
  </head>
  <body>
    <div id="app"></div>
    <script src="/dist/build.js"></script>
  </body>
</html>

Хотя с Iframe он правильно отображается в iframe, единственная проблема в том, что я не могу получить доступ к DOM.

Я понимаю это, потому что реагирующее приложение всегда отображается на стороне клиента, но я хочу получить обработанный DOM. Так как я могу получить доступ к фактическому отображенному DOM?

Даже я заметил, что даже источник страницы в браузере не дает визуализированный DOM? Почему он не показывает визуализированный DOM?

1 ответ

Если функциональность JS и события не требуются, тогда используйте ReactDOMServer.renderToString

 import ReactDOMServer from 'react-dom/server';

-

 this.setState({html:ReactDomServer.renderToString(<Component/>});

это дает HTML в виде строки.

после чего установите html опасно в div

 <div id="comp" dangerouslySetInnerHTML={{ __html: this.state.html }} /> 

как только это будет сделано, у вас есть DOM-элементы, но нет функциональности. Просто элементы DOM для вас, чтобы отобразить. (CSS включен);

Читайте здесь https://reactjs.org/docs/react-dom-server.html

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