React
使用预构建的 React 组件将 Docs Embed 添加到你的 React 应用中
对于 React 项目,GitBook 提供了预构建组件,使嵌入文档变得简单且符合惯用方式。这些组件会自动处理状态管理、上下文和生命周期。
步骤
安装包
添加 @gitbook/embed 到你的 React 项目中:
npm install @gitbook/embed如需完整的 API 参考和源代码,请查看 @gitbook/embed GitHub 上的包.
添加 GitBookFrame 组件
将 frame 组件放在你希望嵌入出现的位置:
function App() {
return (
<GitBookProvider siteURL="https://docs.company.com">
<div className="app">
<YourAppContent />
<GitBookFrame
visitor={{
token: 'your-jwt-token', // 可选:用于自适应内容或已认证访问
unsignedClaims: { userId: '123' } // 可选:用于动态表达式的自定义声明
}}
/>
</div>
</GitBookProvider>
);
}自定义嵌入
将配置属性传递给 frame 组件:
<GitBookProvider siteURL="https://docs.company.com">
<GitBookFrame
trademark={false}
tabs={['assistant', 'search', 'docs']}
colorScheme="dark"
greeting={{ title: '欢迎!', subtitle: '我能帮你什么?' }}
suggestions={['什么是 GitBook?', '我该如何开始?']}
actions={[
{
icon: 'circle-question',
label: '联系支持',
onClick: () => window.open('https://support.example.com', '_blank')
}
]}
tools={[/* ... */]}
visitor={{
token: 'your-jwt-token',
unsignedClaims: { userId: '123' }
}}
/>
</GitBookProvider>如果你省略 colorScheme,嵌入会遵循 iframe 的 CSS color-scheme。这样它就能自动匹配你的应用主题。
使用 useGitBook hook 控制嵌入
使用 useGitBook hook 以编程方式与嵌入交互:
import { useGitBook } from "@gitbook/embed/react";
function HelpButton() {
const gitbook = useGitBook();
const frameURL = gitbook.getFrameURL({ visitor: { token: '...' } });
const handleNavigate = () => {
const iframe = document.createElement('iframe');
iframe.src = frameURL;
const frame = gitbook.createFrame(iframe);
frame.navigateToPage('/getting-started');
frame.navigateToAssistant();
frame.postUserMessage('How do I get started?');
};
return <button onClick={handleNavigate}>获取帮助</button>;
}在 Next.js 或服务端渲染中使用
动态导入组件以避免 SSR 问题:
import dynamic from "next/dynamic";
const GitBookProvider = dynamic(
() => import("@gitbook/embed/react").then((mod) => mod.GitBookProvider),
{ ssr: false }
);
const GitBookFrame = dynamic(
() => import("@gitbook/embed/react").then((mod) => mod.GitBookFrame),
{ ssr: false }
);属性与配置
GitBookProvider 属性:
siteURL
string
是
不适用
你的 GitBook 文档站点 URL(例如, https://docs.company.com).
children
ReactNode
是
不适用
在 provider 内渲染的子组件。
GitBookFrame 属性:
所有配置选项都可以作为属性传递给 <GitBookFrame>。可用选项请参见下方的配置部分。
className
string
否
null
应用于 frame 容器的 CSS 类名。
style
object
否
{}
应用于 frame 容器的内联样式。
colorScheme
'light' | 'dark'
否
继承自 CSS color-scheme
覆盖嵌入的配色方案。
visitor
object
否
{}
已认证访问选项(见下文)。
useGitBook Hook:
返回一个 GitBookClient 实例,包含以下方法:
getFrameURL(options?: { visitor?: {...}, colorScheme?: 'light' | 'dark' })→string- 获取 iframe URLcreateFrame(iframe: HTMLIFrameElement)→GitBookFrameClient- 创建 frame 客户端
frame 客户端提供:
navigateToPage(path: string)→voidnavigateToAssistant()→voidpostUserMessage(message: string)→voidclearChat()→voidconfigure(settings: {...})→voidon(event: string, listener: Function)→() => void
配置选项
配置选项可作为以下对象上的属性使用: <GitBookFrame>:
tabs
tabs覆盖显示哪些标签页。
搜索默认启用。如果你设置 tabs,嵌入将只显示你列出的标签页。
类型:
('assistant' | 'search' | 'docs')[]
colorScheme
colorScheme覆盖嵌入的配色方案。
当省略时,嵌入会遵循 iframe 的 CSS color-scheme,从而继承父页面或浏览器偏好。
类型:
'light' | 'dark'
actions
actions显示在侧边栏中、与标签页并列的自定义操作按钮。每个操作按钮在点击时都会触发回调。
注意:这之前名为 buttons。请改用 actions 。
类型:
Array<{ icon: string, label: string, onClick: () => void }>
greeting
greeting在 Assistant 标签页中显示的欢迎消息。
类型:
{ title: string, subtitle: string }
suggestions
suggestions在 Assistant 欢迎屏幕中显示的建议问题。
类型:
string[]
trademark
trademark在嵌入 UI 中显示或隐藏 GitBook 商标——包括 Docs Embed 页脚和 Assistant 品牌标识。
类型:
boolean默认值:
true
tools
tools用于扩展 Assistant 的自定义 AI 工具。详情请参见 创建自定义工具 。
类型:
Array<{ name: string, description: string, inputSchema: object, execute: Function, confirmation?: {...} }>
visitor (已认证访问)
visitor (已认证访问)类型:
{ token?: string, unsignedClaims?: Record<string, unknown> }
常见陷阱
未使用 GitBookProvider 包裹 –
GitBookFrame需要一个父级GitBookProvider才能工作。在没有动态导入的情况下与 SSR 一起使用 – 该组件使用浏览器 API,必须在 Next.js 或其他 SSR 框架中动态导入。
siteURL 与已发布文档不匹配 – 请确保
siteURL属性与线上文档站点 URL 完全一致。在 provider 外调用 useGitBook –
useGitBookhook 必须在作为GitBookProvider.子级的组件内部使用 树中存在多个 provider
GitBookProvider– 避免嵌套多个实例,因为这会导致上下文冲突。 使用旧的组件名称
GitBookFrame– 现在组件是GitBookAssistantFrame.
最后更新于
这有帮助吗?