当前位置: 首页 > 面试题库 >

将iframe插入react组件

陶树
2023-03-14
问题内容

我有一个小问题。从服务请求数据后,我得到了一个iframe代码作为响应。

<iframe src="https://www.example.com/show?data..." width="540" height="450"></iframe>

我想将其作为道具传递给我的模式组件并显示它,但是当我{this.props.iframe}在render函数中简单地将其显示为字符串时。

在react中将其显示为html的基本方法是什么?


问题答案:

您可以dangerouslySetInnerHTML像这样使用property

const Component = React.createClass({

  iframe: function () {

    return {

      __html: this.props.iframe

    }

  },



  render: function() {

    return (

      <div>

        <div dangerouslySetInnerHTML={ this.iframe() } />

      </div>

    );

  }

});



const iframe = '<iframe src="https://www.example.com/show?data..." width="540" height="450"></iframe>';



ReactDOM.render(

  <Component iframe={iframe} />,

  document.getElementById('container')

);


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="container"></div>

同样,您可以从 字符串中 复制所有属性( 根据问题,您从服务器获取iframe作为字符串
),其中包含<iframe>标签,并将其传递给新<iframe>标签,例如

/**

 * getAttrs

 * returns all attributes from TAG string

 * @return Object

 */

const getAttrs = (iframeTag) => {

  var doc = document.createElement('div');

  doc.innerHTML = iframeTag;



  const iframe = doc.getElementsByTagName('iframe')[0];

  return [].slice

    .call(iframe.attributes)

    .reduce((attrs, element) => {

      attrs[element.name] = element.value;

      return attrs;

    }, {});

}



const Component = React.createClass({

  render: function() {

    return (

      <div>

        <iframe {...getAttrs(this.props.iframe) } />

      </div>

    );

  }

});



const iframe = '<iframe src="https://www.example.com/show?data..." width="540" height="450"></iframe>';



ReactDOM.render(

  <Component iframe={iframe} />,

  document.getElementById('container')

);


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="container"><div>


 类似资料:
  • 问题内容: 我正在尝试将一些内容插入“空白” iFrame中,但是没有插入任何内容。 HTML: JS: 我正在调用该函数,所以我不明白为什么它没有插入。 问题答案: 您真的不需要jQuery: 如果绝对必须使用jQuery,则应使用 请不要忘记,如果您使用的是jQuery,则需要按如下所示插入DOMReady函数:

  • lng、lat COORD呈现到iframe fine下的页面 我想这可能很容易做到,但似乎不能将它们嵌入到URL中。TIA

  • 问题内容: 我正在尝试使用Angular 1.2将iframe动态插入页面中。这是代码: HTML: js: 因此data.html是一个具有有效HTML开头的字符串 该字符串还包含一些div。所以它看起来像: 我在app.js’ngSanitize’中使用。它显示的是div(在iframe之后),而不是iframe本身。 如果我使用jQuery,基本上 效果很好…但是试图使其正确的angular

  • 问题内容: 是的,我知道元组是不可变的,但是这种情况使得我需要在每个元组中插入一个额外的值。因此,其中一项是金额,我需要在其旁边添加其他货币的新项目,如下所示: 可能? 谢谢! 问题答案: 您可以将其转换为列表,插入项目,然后将其转换回元组。

  • 问题内容: 与 哪个更好,为什么? 还是除了以后编写更少的代码外没有其他区别? 写作是否意味着只导入Component对象? 问题答案: 让您代替。它减少了React名称空间的键入和重复,这通常是一种理想的现代编码约定。 此外,Webpack 2和Rollup之类的工具会“摇晃”,这意味着任何未使用的导出都不会捆绑到您的最终代码中。使用/,您可以保证所有React的源代码都将被捆绑。使用,某些工具

  • 我需要在React类组件中插入一个JS-script,并使该脚本仅在该组件已经挂载并且物理上位于DOM中的时刻运行。我该怎么做呢?谢谢你的关注。