Skip to main content
@lifi/widget-light 所有导出项的完整 API 参考。

<LiFiWidgetLight>

在 iframe 内渲染 widget 并管理 postMessage 桥接的主组件。

Props

示例

每个页面仅支持一个 <LiFiWidgetLight> 实例。事件总线和 guest bridge 是模块级单例。

useWidgetLightHost(options)

管理 postMessage 桥接主机端的底层钩子。如果你需要渲染自己的 <iframe> 元素而非使用 <LiFiWidgetLight> 组件,请使用它。

Options

返回值

示例

useWidgetLightEvents()

返回一个类型化的事件发射器,用于订阅 widget 事件。可以从任何组件调用 — 无需 provider 包裹。

返回值

示例

完整的事件参考请见 Widget Light 事件

类型

WidgetLightChainTypeWidgetChainType 这两个联合类型都描述生态系统的判别标识,并包含用于 Tron 的 TVM。在 iframe 的 postMessage 协议中使用 WidgetLightChainType(例如 IframeEcosystemHandler.chainType)。在面向主机的配置类型(例如 ConnectWalletArgs.chainType,即托管的 widget 告知你的应用要连接哪个生态系统)中使用 WidgetChainType。这两个名称之所以不同,是因为协议层级的类型和配置层级的类型在包中是分开定义的。

WidgetLightConfig

主配置类型。必须可 JSON 序列化。完整参考请见 配置 Widget Light
必填字段:integrator: string

ConnectWalletArgs

当 widget 请求连接钱包时传递给 onConnect 回调的参数:

IframeEcosystemHandler

由所有生态系统处理器实现的接口:

WidgetLightEvent

所有事件名称的枚举。其取值和 payload 类型请见 Widget Light 事件

WidgetLightChainType

用于 postMessage 协议的链类型判别标识:

WidgetChainType

用于配置的扩展链类型(包含 TVM):

FAQ

我可以在同一页面上运行多个 widget 吗?

不可以。@lifi/widget-light 对事件总线和 guest bridge 使用模块级单例。每个页面仅支持一个 <LiFiWidgetLight> 实例。

src 应该使用什么 URL?

默认值(https://widget.li.fi)是生产环境托管的 widget。在大多数用例中,你完全不需要设置 src。若要针对特定版本或自托管的部署进行测试,请将你的自定义 URL 作为 src 传入。

为什么 config 必须可 JSON 序列化?

配置通过 postMessage 发送到 iframe,而 postMessage 使用结构化克隆算法。React 节点、函数、类实例和 MUI 主题对象无法被克隆。WidgetLightConfig 类型只暴露可序列化的字段(不含 React 节点、回调或 MUI 主题对象),因此类型系统会在编译时拒绝大多数不可序列化的值。这是通过省略字段来实现约束,而非一种通用的可序列化性检查,因此仍要确保你传入的任何值在运行时都是可 JSON 序列化的。

自动调整大小是如何工作的?

autoResizetrue 时,iframe 内容使用 ResizeObserver 检测高度变化并将其发布到主机。主机直接设置 iframe.style.height 以实现零闪烁的更新。如果你想自行通过 CSS 控制 iframe 尺寸,请设置 autoResize={false}

页面刷新后我需要处理重新连接吗?

在每次挂载时,钱包状态会通过 INIT 握手从你的应用发送到 iframe。如果你的 wagmi/wallet-adapter 处理重新连接(大多数默认情况下都会),widget 将自动接收到重新连接后的状态。

安全性是如何处理的?

iframeOrigin 会自动从 src 派生(默认为 https://widget.li.fi),因此 postMessage 通信被限制到正确的来源。来自其他来源的消息会被静默丢弃。只有当你想覆盖派生出的值时,才需要显式设置 iframeOrigin

我在哪里可以找到可运行的示例?

widget 仓库包含两个示例:
  • vite-iframe-wagmi — 最小化的仅 EVM 集成
  • vite-iframe — 完整的多生态系统设置,包含事件、配置响应式和外部钱包管理
在本地运行它们: