如何在 React 组件中插入使用 js 创建的 iframe

Posted

技术标签:

【中文标题】如何在 React 组件中插入使用 js 创建的 iframe【英文标题】:How to insert iframe created using js in a React component 【发布时间】:2021-12-15 06:40:25 【问题描述】:

我正在尝试使用 iframe 构建应用。它将有控制器来更改 iframe 样式并向其添加文本。 iframe 就像预览一样。我想用 javascript 创建 iframe。我尝试这样创建元素并将其附加到组件返回 div,如下所示:

let iframe = document.createElement('iframe');
document.querySelector('#iframeContainer').appendChild(iframe);

我收到此错误:TypeError: Cannot read properties of null (reading 'appendChild')

我也尝试了另一种方法:

let iframe = React.createElement('iframe', ); 
ReactDOM.render(
  iframe, document.getElementById('root')
);

在这个方法中,因为我没有返回值,所以会抛出错误。我无法将其插入组件中。

我应该如何解决这个问题?我对所有想法持开放态度。

【问题讨论】:

【参考方案1】:

我找到了解决这个问题的方法。当我尝试附加元素时,我错过了组件生命周期。在这里花了很多时间之后是我的解决方案:

const createIframe = () => 
const iframe = document.createElement('iframe'); 
document.getElementById('iframeContainer').appendChild(iframe);


useEffect(() => 
    createIframe();
  );

通过在 useEffect 中调用我的函数,我确保创建了我想要附加 chil 的 div。我使用了 useEffect 但如果您使用的是类组件,则应该使用 componenDidMount()

【讨论】:

以上是关于如何在 React 组件中插入使用 js 创建的 iframe的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react 和 next js 中使用 Styled 组件创建全局样式,使用 css 文件和 styled 组件的组合是不是更好?

如何在子元素之后插入“React”组件?

在 React.js 中,我如何从组件的字符串表示中呈现组件?

如何将带有子项的 react-bootstrap 组件导入 kotlin-js react app

我如何在React组件中插入HTML页面

为啥在 React.js 中为组件使用单独的 CSS 文件