简体   繁体   English

如何在反应中使用多个标签渲染嵌入式 html

[英]How to render embedded html with multiple tags in react

I'm embedding a request form.我正在嵌入一个请求表。 I want to click a button in react to open the form, then add a button to go back/exit.我想在反应中单击一个按钮以打开表单,然后将一个按钮添加到 go 后退/退出。 Ive added the HTML tags into index.html but I'm having a hard time with control.我已经将 HTML 标签添加到 index.html 但我很难控制。 I toggle the display: none/block to get it to appear/ disappear which works fine (also have to toggle display for all of the react app so only the form is shown.).我切换显示:none/block 以使其出现/消失,这很好用(还必须切换所有反应应用程序的显示,以便只显示表单。)。

The Html I'm trying to embed has 3 tags.我尝试嵌入的 Html 有 3 个标签。 I'm not able to find an answer of how to use dangerouslySetInnerHTML with multiple tags.我无法找到如何使用带多个标签的 dangerouslySetInnerHTML 的答案。

I've also just tried to use dangerouslySetInnerHTML twice and just gave the react div the needed reference id.我也刚刚尝试过两次使用 dangerouslySetInnerHTML 并为反应 div 提供了所需的参考 ID。 No luck, just a blank white page.没有运气,只是一个空白的白页。

<div id="f6f2802e-49e8-477b-b405-8b2b18dded97"></div>
<link rel="stylesheet" media="screen" href="https://d3ey4dbjkt2f6s.cloudfront.net/assets/external/work_request_embed.css" />
<script src="https://d3ey4dbjkt2f6s.cloudfront.net/assets/static_link/work_request_embed_snippet.js" clienthub_id="f6f2802e-49e8-477b-b405-8b2b18dded97" form_url="https://clienthub.getjobber.com/client_hubs/f6f2802e-49e8-477b-b405-8b2b18dded97/public/work_request/embedded_work_request_form"></script>

12 hours of trying. 12小时的尝试。 ( https://codesandbox.io/s/l9qmrwxqzq ) This worked pretty much immediately. https://codesandbox.io/s/l9qmrwxqzq )这很快就奏效了。 Once I found it.一旦我找到它。

'''
import React from "react";
import ReactDOM from "react-dom";
import { Helmet } from "react-helmet";

import "./styles.css";

function App() {
  return (
    <div className="App">
      <h1>Check if Helmet works as expected with script tags</h1>
      <p>Check console output - you will see $ is undefined</p>
      <Helmet>
        <script
          src="https://code.jquery.com/jquery-3.3.1.min.js"
          integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
          crossorigin="anonymous"
        />
        <script>
          {`
            console.log('Test', typeof $);
          `}
        </script>
      </Helmet>
    </div>
  );
}

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

My final product我的最终产品

'''
import React from "react";
import { Helmet } from "react-helmet";

export default class Jobber extends React.Component {
  render() {
    return (
      <div className="Application" id="f6f2802e-49e8-477b-b405-8b2b18dded97">
        <Helmet>
            <div id="f6f2802e-49e8-477b-b405-8b2b18dded97"></div>
          <link
            rel="stylesheet"
            media="screen"
            href="https://d3ey4dbjkt2f6s.cloudfront.net/assets/external/work_request_embed.css"
          />
          <script 
            src="https://d3ey4dbjkt2f6s.cloudfront.net/assets/static_link/work_request_embed_snippet.js" clienthub_id="f6f2802e-49e8-477b-b405-8b2b18dded97" form_url="https://clienthub.getjobber.com/client_hubs/f6f2802e-49e8-477b-b405-8b2b18dded97/public/work_request/embedded_work_request_form"
            />

        </Helmet>
      </div>
    );
  }
}
'''

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM