首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dangerouslySetInnerHtml仍未呈现脚本

dangerouslySetInnerHtml仍未呈现脚本
EN

Stack Overflow用户
提问于 2018-10-21 11:17:34
回答 1查看 1.6K关注 0票数 0

我在这里束手无策。我刚刚在React中建立了一个网站。但是,我的网站的最后一部分来自第三方。我期待着某种类型的api调用,但却收到了一个js标记,该标记呈现了他们的系统所需的元素。此脚本标记是与预订系统挂钩的cdn类型链接。我尝试过使用dangerouslySetInnerHtml和许多其他插件,它们声称允许您将脚本标记插入到组件中。然而,尽管标记出现在代码中(至少当我在inspect模式下查看时),它仍然没有呈现任何内容。我试过将相同的标签放入html中,它工作得很好,所以我知道这与组件本身有关。

代码语言:javascript
复制
import React from 'react';
import Row from 'react-bootstrap/lib/Row';
import Col from 'react-bootstrap/lib/Col';
import Grid from 'react-bootstrap/lib/Grid';
import ScriptTag from 'react-script-tag';
import Safe from 'react-safe';

class ReservationForm extends React.Component{
  createMarkup = () => {
    return {__html: `<script LANGUAGE="Javascript" TYPE="text/javascript" SRC="https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg"></script>`}
  }
    render = () => {
      return (
        <Grid fluid>
          <Row className="reservation-form">
            <Col>
              <div dangerouslySetInnerHTML={this.createMarkup()} />
            </Col>
          </Row>
          <Row className="icon-nav-bar">
              <Col col={3}>
              </Col>
              <Col col={3}>
              </Col>
              <Col col={3}>
              </Col>
              <Col col={3}>
              </Col>
            </Row>
        </Grid>
      );
    }
}

export default ReservationForm;

不幸的是,我不能在这里包含实际的cdn脚本,因为它包含敏感信息。但是,如果我能得到任何帮助,我将不胜感激!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-10-21 11:40:16

底层React代码很可能使用innerHTML或类似的属性/方法,当包含<script>元素时,这些属性/方法不会执行when元素。

您必须手动创建脚本元素,并通过本机方法(如appendChild )将其附加到DOM

代码语言:javascript
复制
var script = document.createElement("script");
script.src = "http://example.com/script.js";
document.head.appendChild(script)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52911849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档