@fillout/react

中文文档
3.1.2发布于 2026/04/10MITTypeScriptESM + CJS零依赖近 30 天下载 9.4万

在您的 React 工程中嵌入填充表单

中文使用文档
文档目录9 节
  1. 设置
  2. 嵌入组件
  3. 标准嵌入
  4. 完全嵌入
  5. 弹出已嵌入
  6. 嵌入滑动器
  7. 弹出和滑动嵌入按钮
  8. 倾听形式事件
  9. 自定义域

填充反应嵌入

嵌入 填充数 在反应项目中直接显示窗体。 类型脚本包含, 没有依赖性 :)

提示:如果你想在节点.js中使用填充API,请尝试 @ fillout/ api来啊!

设置

安装方式 npm i @fillout/react

嵌入组件

每个嵌入类型都有组件。 他们都要求 filloutId 道具,这是你的形式。 这个代码很容易在编辑器的url或活的形态中发现,例如, forms.fillout.com/t/foAdHjd1Duus。 。 。 .

所有嵌入组件允许您使用可选选项通过 URL 参数 parameters 道具,也可以使用 inheritParameters 使窗体继承主机页面url中的参数.

标准嵌入

这个很简单.

import { FilloutStandardEmbed } from "@fillout/react";

function App() {
  return (
    <div
      style={{
        width: 400,
        height: 400,
      }}
    >
      <FilloutStandardEmbed filloutId="foAdHjd1Duus" />
    </div>
  );
}

export default App;

如果你不愿手动设置嵌入高地,而是将其扩展到形式大小,使用 dynamicResize 道具 (英语).

完全嵌入

这个 FilloutFullScreenEmbed 组件填充整个页面,由 position: fixed。 。 。 .

import { FilloutFullScreenEmbed } from "@fillout/react";

function App() {
  return <FilloutFullScreenEmbed filloutId="foAdHjd1Duus" inheritParameters />;
}

export default App;

弹出已嵌入

此组件创建了弹出, 黑暗的背景覆盖了后面的页面内容 。 与"FullScreen"嵌入不同,它可以使用关闭按钮来关闭,也可以在弹出器外点击来关闭.

popup screenshot

你用自己的状态来控制它 这个 isOpen 财务报告和审定财务报表 onClose 需要道具.

import { useState } from "react";
import { FilloutPopupEmbed } from "@fillout/react";

function App() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <>
      <button onClick={() => setIsOpen(true)}>Schedule a call</button>

      <FilloutPopupEmbed
        filloutId="foAdHjd1Duus"
        isOpen={isOpen}
        onClose={() => setIsOpen(false)}
      />
    </>
  );
}

export default App;

嵌入滑动器

与弹出嵌入式相似,此功能将和您自己的按钮和状态一起使用, 因此组件需要 isOpen 财务报告和审定财务报表 onClose 道具来. 窗体会从屏幕一侧滑出. 您可以控制它来自哪个方向 sliderDirection,这可以是 left 或者说 right (默认).

slider screenshot

import { useState } from "react";
import { FilloutSliderEmbed } from "@fillout/react";

function App() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <>
      <button onClick={() => setIsOpen(true)}>Schedule a call</button>

      <FilloutSliderEmbed
        filloutId="foAdHjd1Duus"
        inheritParameters
        parameters={{
          example: "abc",
        }}
        isOpen={isOpen}
        onClose={() => setIsOpen(false)}
        sliderDirection="left"
      />
    </>
  );
}

export default App;

弹出和滑动嵌入按钮

如果您不愿自行管理弹出或滑动的开放状态, 请使用 FilloutPopupEmbedButton 或者说 FilloutSliderEmbedButton。这会使一个按钮在点击时打开嵌入层。 这些部件采用与独立对应设备相同的道具(除 isOpen 财务报告和审定财务报表 onClose),但拥有一些额外的可选道具来自定义按钮.

  • text - 更改按钮文本
  • color - 更改按钮背景颜色。 只要您指定了十六进制代码,文本颜色就会自动与它相对应.
  • size - 小型、中型或大型
  • float - 让你的按钮浮上屏幕. bottomLeft 或者说 bottomRight。 。 。 .
import { FilloutSliderEmbedButton } from "@fillout/react";

function App() {
  return (
    <FilloutSliderEmbedButton
      filloutId="foAdHjd1Duus"
      inheritParameters
      parameters={{
        example: "abc",
      }}
      sliderDirection="left"
      text="Schedule a call"
      color="#444444"
      size="small"
      float="bottomRight"
    />
  );
}

export default App;

需要更多控制按钮外观的,只需自行制作并结合独立嵌入组件一起使用.

倾听形式事件

您可以使用 onInit, (中文(简体) ), onPageChange 财务报告和审定财务报表 onSubmit 道具来. 其中每一个都给出了提交UUID作为第一个参数,以及 onPageChange 道克给出了页面ID作为第二个参数.

import { FilloutStandardEmbed } from "@fillout/react";

function App() {
  return (
    <FilloutStandardEmbed
      filloutId="4SVaJQNVdrus"
      dynamicResize
      onInit={(submissionUuid) => {
        console.log(
          `User started filling out the form (submission ID: ${submissionUuid})`
        );
      }}
      onPageChange={(submissionUuid, pageId) => {
        if (pageId === "qTcp") {
          console.log("User is on the review step");
        }
      }}
      onSubmit={async (submissionUuid) => {
        const email = await doSomethingOnYourServer(submissionUuid);
        console.log(`${email} finished filling out the form`);
      }}
    />
  );
}

export default App;

这可以结合 @ fillout/ api 软件包,以获取关于窗体结构的信息,并在获得提交UUID后获取字段值.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 onPageChange 可能为窗体上的任何一页所触发,包括嵌入第一负载时的起始页。 您应该总是检查页面ID, 而不是仅仅因为函数被触发而假设用户在表格中的位置 .

自定义域

如果您想利用只有自有域内格式才能提供的特性,例如定制JS,你可以使用 domain 改变嵌入式url的道具.

import { FilloutFullScreenEmbed } from "@fillout/react";

function App() {
  return (
    <FilloutFullScreenEmbed filloutId="foAdHjd1Duus" domain="example.com" />
  );
}

export default App;

版本与发布记录

@fillout/react 共发布 55 个版本,首次发布于 2023/10/17;过去 12 个月发布了 2 个版本。

版本发布日期距今
3.1.2latest2026/04/107 个月前
3.1.02026/04/077 个月前
3.0.02025/04/271.5 年前
2.0.122025/04/181.6 年前
2.0.112025/03/281.6 年前
2.0.102025/03/241.6 年前

关于 @fillout/react 的常见问题

@fillout/react 是什么?

在您的 React 工程中嵌入填充表单

如何安装 @fillout/react?

在项目目录运行 npm install @fillout/react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0 || ^19.0 || ^19.0.0-rc)、react-dom(^18.0 || ^19.0 || ^19.0.0-rc)、@types/react(*)、@types/react-dom(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fillout/react 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fillout/react 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@fillout/react 可以商用吗?

@fillout/react 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fillout/react 的下载量有多少?

根据 npm 官方下载统计,@fillout/react 在 2026/10/15 – 2026/11/13 这 30 天内被下载 94,081 次,日均约 3,136 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fillout/react 还在维护吗?

最新版本 3.1.2 发布于 2026/04/10(7 个月前);至今共发布 55 个版本,其中过去 12 个月发布了 2 个;首次发布于 2023/10/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。