You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SolidJS中使用iframe组件?第三方包报错及替代方案咨询

在SolidJS中正确插入iframe的方法

一、先卸载那个出问题的iframe包

你下载的iframe包是给Node.js环境用的工具,并非前端框架的组件,在SolidJS里引入它必然会引发bug,直接执行卸载命令即可:

npm uninstall iframe

二、直接用原生iframe标签(最简便的方案)

SolidJS支持直接使用所有原生HTML元素,完全不需要额外安装组件包,把你的代码改成下面这样就能正常运行:

export default function SearchEngine() {
  return (
    <div>
      <iframe 
        src="http://gkwhelps.herokuapp.com" 
        width="100%" 
        height="657px"
        // 可按需添加其他原生属性,比如去除边框、允许全屏等
        frameBorder="0"
        allow="fullscreen"
      />
    </div>
  )
}

三、有没有类似react-iframe的SolidJS专用模块?

目前没有热门的官方或社区维护的SolidJS专用iframe组件包——因为原生iframe已经能满足绝大多数场景需求。如果需要封装加载状态、错误处理这类额外功能,可以自己简单写个封装组件:

import { createSignal } from 'solid-js';

function SolidIframe(props) {
  const [isLoading, setIsLoading] = createSignal(true);
  const [hasError, setHasError] = createSignal(false);

  return (
    <div>
      {isLoading() && <div>加载中...</div>}
      {hasError() && <div>加载失败,请重试</div>}
      <iframe
        {...props}
        onLoad={() => setIsLoading(false)}
        onError={() => {
          setIsLoading(false);
          setHasError(true);
        }}
      />
    </div>
  );
}

// 使用方式和原生iframe一致
export default function SearchEngine() {
  return (
    <div>
      <SolidIframe 
        src="http://gkwhelps.herokuapp.com" 
        width="100%" 
        height="657px"
      />
    </div>
  )
}

内容的提问来源于stack exchange,提问作者gks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:24:21