@builder.io/react

中文文档
9.4.11发布于 2026/11/05MITTypeScriptESM + CJS构建来源已验证近 30 天下载 29.4万

注意: 如果您想要将您的 React 服务器组件注册为自定义组件, 您需要使用我们的实验性 NextJS SDK 这里。 。 。 .

中文使用文档
文档目录11 节
  1. 最低限度支持的版本
  2. 一体化
  3. 反应 API
  4. 简单示例
  5. 注册组件
  6. 构建组件
  7. 构建器
  8. 构建器关联
  9. 构建器
  10. 使用 API 版本 v3 查询内容指南
  11. 节点 v20 + M1 Macs (苹果硅) 支持

Builder.io 反应 SDK

注意: 如果您想要将您的 React 服务器组件注册为自定义组件, 您需要使用我们的实验性 NextJS SDK 这里。 。 。 .

最低限度支持的版本

这个 peerDependencies 许可 反应和反应 DOM QQ16.8.0 (和回放19号). 这是一个安装范围,而不是对反应16的积极支持的保证. E2E测试的最小值是: 反应和反应 DOM 18.2.0; 见 框架版本矩阵。 。 。 .

一体化

看我们的满分 正在启动文件,或跳入整合。 我们一般建议从网页构建开始,作为你的初步整合:

整合页面大楼 综合科大楼 整合 CMS 数据
CTA to integrate page building CTA to integrate section building CTA to integrate CMS data

反应 API

简单示例

使用 Builder 的要旨是获取内容( 使用查询在 自定义字段 财务报告和审定财务报表 目标。构建器的结构就像一个传统的无头CMS,你可以有不同的内容类型,叫做 模型。默认情况下,每个构建器空间都有一个 "page" 型号.

import { builder } from '@builder.io/react'

const API_KEY = '...' // Your Builder public API key
const MODEL_NAME = 'page';

const content = await builder
  .get(MODEL_NAME, {
    // Optional custom query
    query: {
      'data.customField.$gt': 100,
    },
    // Optional custom targeting
    userAttributes: {
      urlPath: '/' // Most Builder content is targeted at least by the URL path
    }
  })
  .promise()

// Later, pass the fetched content to the BuilderComponent
<BuilderComponent model={MODEL_NAME} content={content} />

构建者的内容只是Json,你传递给一个 <BuilderComponent /> 来制作. 在这里多学点

您可以查看所有选项 builder.get 用于获取内容 我们在此充分提及

例如,用 Next.js 将 Builder 作为您的主页:

export const getStaticProps = async () => {
  return {
    props: {
      builderContent: await builder
        .get('page', {
          userAttributes: {
            urlPath: '/', // Fetch content targeted to the homepage ("/" url)
          },
        })
        .promise(),
    },
  };
};

export default function MyHomePage({ builderContent }) {
  return (
    <>
      <YourHeader />
      <BuilderComponent model="page" content={builderContent} />
      <YourFooter />
    </>
  );
}

也可以允许动态页面构建(在新的URL上动态创建新页面的能力). 例如,见 本指南 如何做到这一点

注册组件

Builder最强大的功能之一是将自己的组件注册,用于拖放编辑器中. 您可以选择使用这些内置组件, 或是允许使用的唯一组件 (例如通过) 仅限组件模式(中文(简体) )

import { Builder } from '@builder.io/sdk-react';

function MyHero(props) {
  /* Your own hero component in your codebase */
}

Builder.registerComponent(MyHero, {
  name: 'Hero',
  inputs: [
    { name: 'title', type: 'string' }, // Gets passed as the `title` prop to the Hero
  ],
});

学习更多关于 在构建器中注册组件

构建组件

你可以找到满分 这里的构建器组件道具的参考文件

const MODEL_NAME = 'page';

// Render
<BuilderComponent model={MODEL_NAME} content={builderJson} />;

见我们的指南 盖茨比 财务报告和审定财务报表 下一个.js 使用这些框架的指南

将数据和函数向下传递

也可以通过 数据 财务报告和审定财务报表 函数 下至用于UI的构建器组件(例如绑定) 数据值为UI, 例如, 用于文本值或列表上显示的值, 以及触发例如单击按钮的行动 )

所有通过的数据都可用Builder 提供 行动和约束 作为 state.*,例如以下例子 state.products等将可用

<BuilderComponent
  model="page"
  data={{
    products: productsList,
    foo: 'bar',
  }}
  content={builderJson}
/>

您也可以传递函数、自定义对象等复杂数据以及您可以使用的库 context. 与React上下文相类似,上下文一路下行(例如通过符号等). 此数据没有观察到变化和突变

<BuilderComponent
  model="page"
  context={{
    addToCart: () => myService.addToCart(currentProduct),
    lodash: lodash,
  }}
  content={builderJson}
/>

背景情况见 行动和约束 作为 context.*,例如 context.lodash 或者说 context.myFunction() 实例

传递复杂数据

所有传下来的东西都可以在 state 数据和动作中的对象 - 例如. state.products[0].name

更多关于使用传递的数据 这里

构建器

全球 Builder 单通有多种用途. 最重要的是登记自定义组件.

import * as React from 'react';
import SyntaxHighlighter from 'react-syntax-highlighter';
import { Builder } from '@builder.io/react';

class CodeBlockComponent extends React.Component {
  render() {
    return <SyntaxHighlighter language={this.props.language}>{this.props.code}</SyntaxHighlighter>;
  }
}

Builder.registerComponent(CodeBlockComponent, {
  name: 'Code Block',
  inputs: [
    {
      name: 'code',
      type: 'string',
      defaultValue: 'const incr = num => num + 1',
    },
    {
      name: 'language',
      type: 'string',
      defaultValue: 'javascript',
    },
  ],
});

见我们的完整指南 在此注册自定义组件。 。 。 .

见 用于注册的完整参考文件。 。 。 .

构建器关联

使用数据模型

尽管您已经可以直接从我们的内容 API 中获取数据模型, 并像任何其他 API 资源一样使用它, 带有构建器组件, 您可以使用活版编辑 / 预览 / A/B测试 中的数据模型.

示例,设置可编辑的主题:
 <BuilderContent model="site-settings"> { (data, loading) => {
   If (loading) {
     return <Spinner />
   }
   return <>
      /*pass values down to an example ThemeProvider, used as a wrapper in your application*/
       <ThemeProvider theme={data.theme} >
           {props.children}
       </ThemeProvider>
   </>
   }}
</BuilderContent>

或从服务器侧取到并使用 content 道具,例如Next.js中

export const getStaticProps = async () => {
  return {
    props: {
      builderDataContent: await builder.get('site-settings', /* other options like queries and targeting */).promise()
    }
  }
}

export default function MyPage({ builderDataContent }) {
  return <BuilderContent content={builderDataContent}>{data =>
    <ThemeProvider theme={data.theme}>
      {/* ... more content ... */}
    </ThemeProvider>
  </BuilderContent>
}

使用页/节自定义字段

构建器中的页面和段落模型可用 自定义字段。为了允许对使用这些自定义字段的组件进行活版编辑/预览,您可以使用 BuilderContent 将输入数据从模型传递到显示内容以外的组件

示例,通过自定义字段输入:
<BuilderContent model="landing-page">
  {data => {
    /*use your data here within your custom component*/
    return (
      <>
        <FeaturedImage image={data.featuredImage} />
        <BuilderComponent content={content} model="landing-page" />
      </>
    );
  }}
</BuilderContent>

手动传递内容

这对进行服务器侧式渲染很有用, 例如: 盖茨比 财务报告和审定财务报表 下一个.js 或经由 装入我们默认的 API 以外的数据源, 例如您自己的数据库中保存的数据 网络用户

const content = await builder.get(‘your-data-model’, { ...options });
if (content) {
  /*use your data here*/
  return <BuilderContent model="your-data-model" content={content} >
}

高级查询

使用自定义时 模型 财务报告和审定财务报表 字段 您可以对您的内容进行更高级的过滤 查询 财务报告和审定财务报表 目标

import { BuilderContent, builder } from '@builder.io/react';

builder.setUserAttributes({ isLoggedIn: false })

export default () => <div>
  <BuilderContent
     model="your-data-model"
     options={{ query: { 'data.something.$in': ['value a', 'value b'] } }} />
  <!-- some other content -->
</div>

构建器

反应 SDK 输出 SDK 的核心 构建对象,用于设置类似 您的 API 密钥和用户属性

import { builder } from '@builder.io/react';

builder.init(YOUR_KEY);

// Optional custom targeting
builder.setUserAttributes({
  userIsLoggedIn: true,
  whateverKey: 'whatever value',
});

字节版本

注:如果您想要一个零依赖,快速而小型的构建器SDK用于React,我们强烈鼓励您尝试我们的Gen 2 React SDK. 你能找到的,我帮你找 这里。 。 。 .

这个SDK有一个lide版本,它只提供实现您构建器内容所需的最低限度的组件,它不会有任何默认注册的内置组件,这个选项应该与自定义组件一起工作. 主要区别在于您需要特别添加您想要使用的任何内置组件, 否则它们不会出现 . 要使用 lide 套件, 您将更改您从 @builder/react 改为 @builder/react/lite 然后只导入要使用的内置组件 :

// Change all imports from '@builder.io/react' to '@builder.io/react/lite'
import { BuilderComponent } from '@builder.io/react/lite';

// Import only what built-in components you like to use
import '@builder.io/react/dist/lib/src/blocks/Button';
import '@builder.io/react/dist/lib/src/blocks/Columns';

使用 API 版本 v3 查询内容指南

用于使用 API 版本 v3,您需要通过 apiVersion 作为 init 函数中的 “ v3 ” 。 例如:

import { builder } from '@builder.io/react';

// First, initialize the SDK with your API key
builder.init('YOUR_API_KEY_GOES_HERE');
// Then, set the API version to v3
builder.apiVersion = 'v3';

切换到 API 版本 v3 的原因

  • 更好,更可扩展的以下内容: 查询 v3 建在全球规模的基础设施上,以确保快速响应时间和高可用性
  • 有能力运送更多地物,速度更快:查询V3将使我们能够不断将最新地物运送给客户,而不会中断基本流量. 这些将只被运至查询 V3 而不是查询 API 的旧版本

马上就来了...

  • 更好地支持本地化:基于本地化和查询的一些较新的特性将在查询V3中得到更好的支持
  • 支持多层嵌入式引用:查询V3将允许您查询,解析,并返回已经嵌入了其他内容和符号的嵌入式引用内容.

节点 v20 + M1 Macs (苹果硅) 支持

SDKs的依赖 isolated-vm,用于在节点服务器上安全执行代码的库. 在节点v20和M1 Macs上运行时,该库有一个相容性问题. 要解决这个问题,你必须提供 NODE_OPTIONS=--no-node-snapshot 到运行您服务器的命令.

如果您不提供此旗帜, SDK 会跳过使用 isolated-vm。这只发生在运行节点v20的苹果硅机上.

更多信息见 这个问题。 。 。 .

版本与发布记录

@builder.io/react 共发布 1,305 个版本,首次发布于 2018/08/30;过去 12 个月发布了 23 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
9.4.11latest2026/11/053 天前
9.4.102026/10/2019 天前
9.4.10-02026/10/1524 天前
9.4.92026/10/1524 天前
9.4.82026/09/281 个月前
9.4.72026/09/181 个月前

其他发布通道:nightly → 0.1.118-0,react-15-nightly → 0.1.121-0,react-15-beta → 0.1.121-3,react-15 → 0.1.122,backport-v1.x → 1.1.54,react-5.x-lts → 5.0.12。

关于 @builder.io/react 的常见问题

@builder.io/react 是什么?

注意: 如果您想要将您的 React 服务器组件注册为自定义组件, 您需要使用我们的实验性 NextJS SDK 这里。 。 。 .

如何安装 @builder.io/react?

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

@builder.io/react 支持 TypeScript 吗?

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

@builder.io/react 支持 ESM 还是 CommonJS?

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

@builder.io/react 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=6.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@builder.io/react 可以商用吗?

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

@builder.io/react 的下载量有多少?

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

@builder.io/react 还在维护吗?

最新版本 9.4.11 发布于 2026/11/05(3 天前);至今共发布 1305 个版本,其中过去 12 个月发布了 23 个;首次发布于 2018/08/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。