javascript - ReactangerlySetInnerHTML 和 iframe

标签 javascript reactjs

我有一个可以呈现 Wordpress 博客文章的组件。博客文章包含常规文本/html 标记,有时还包含带有元素的 YouTube 嵌入内容。 angeredlySetInnerHTML 删除此 iframe。我如何支持这种类型的内容。

最佳答案

您可以通过创建一个永不更新的 React 元素来解决这个问题,但在创建时会使用常规 Javascript 插入您想要的 html。请注意,这非常不安全!

const StaticHtml = React.createClass({
  inject( element ) {
     element.innerHTML = this.props.html;
  },
  
  shouldComponentUpdate() {
     return false;   //prevent React updates as it will get confused by the DOM it didn't put there!
  },
  
  render() {
     return <div ref={ this.inject } />
  }
});

const myHtml = `<iframe width="560" height="315" src="https://www.youtube.com/embed/jUjh4DE8FZA" frameborder="0" allowfullscreen></iframe>`;
ReactDOM.render( <StaticHtml html={ myHtml } />, document.getElementById("app") );
<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='app'></div>

你无法更新“html”属性的值,因为 React 会感到困惑,所以请确保每当 html 更改时销毁并重新创建该元素(“key”属性对此很有用)。

关于javascript - ReactangerlySetInnerHTML 和 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083466/

相关文章:

javascript - 如何将数据库嵌入到我的 vuejs 应用程序中?

javascript - 在 YUI 数据表中显示 JSON 对象

reactjs - GraphQL 返回数据但在代码中未定义

reactjs - 用户能否在 Chrome 中更改 Redux/Mobx 的值以获得对受限 View 的访问权限?

javascript - JS - React - map() 方法对元素索引进行过滤(仅在索引满足条件时运行)

javascript - 有关 promise 的详细信息;例子

javascript - 强制 Javascript 函数调用调用 Function.prototype.call 方法

javascript - node.js 找不到模块 './lib/compat'

android - react native 生成签名的 apk 错误

css - 索环主题与组件上的自定义 CSS 混合