SuperAPI AI 工具集

sanity-app-sdk

前端与建站

查看项目

更新于 10-27 06:30

技能介绍

Sanity App SDK 是 Sanity 提供的 React 前端开发工具包(包名 @sanity/sdk-react),用于在应用中构建与 Sanity 内容交互的功能。资料重点介绍了钩子的选择与使用方式、文档句柄模式、Suspense 加载处理以及内容编辑实践。

用途与主要能力:SDK 面向需要读取、展示和编辑 Sanity 内容的 React 应用。它提供多种数据钩子:useDocuments 与 usePaginatedDocuments 用于获取文档列表,返回文档句柄而非完整文档;useDocumentProjection 用于从句柄读取指定字段用于展示;useDocument 与 useEditDocument 用于实时读取和写入单个文档;useQuery 用于执行原始 GROQ 查询,资料建议节制使用,优先采用句柄加投影的方式。

使用方式:资料给出的基本模式是先获取句柄,再将句柄展开传入其他钩子。例如使用 useDocuments({documentType: 'article'}) 获取文章列表,在接收单个句柄的子组件中使用 useDocumentProjection({...handle, projection: '{title}'}) 读取标题。渲染列表时应使用 documentId 作为 React key,而不是数组索引。编辑时应通过 useEditDocument 在 onChange 时写入,示例为用 useDocument 读取 title 路径,再用 useEditDocument 写入输入值;资料明确不建议把文档字段值保存在 useState 中并在提交时统一保存,因为这种模式会产生过期数据并丢失并发编辑。

加载与配置:数据钩子在加载时会挂起,因此每个获取数据的组件应包裹在带 fallback 的 Suspense 中,每个组件只保留一个获取数据的钩子,并始终为 SanityApp 传入 fallback。所有 SDK 钩子都必须在 SanityApp 内部使用。

适用场景:适合构建 Sanity 内容管理或内容展示类 React 应用,例如文章列表、字段展示和实时编辑界面。

限制与补充:资料强调,如果配置了 Sanity MCP 服务器,应在编写 SDK 代码前调用其 get_sanity_rules 工具并传入 app-sdk 规则,该规则由 Sanity 维护、比资料中的笔记更详细并取代之;下方笔记仅作为 MCP 不可用时的后备。资料还列出官方文档地址,包括最佳实践 https://www.sanity.io/docs/app-sdk/sdk-best-practices、编辑文档 https://www.sanity.io/docs/app-sdk/editing-documents、配置 https://www.sanity.io/docs/app-sdk/sdk-configuration、部署 https://www.sanity.io/docs/app-sdk/sdk-deployment,以及 API 参考 https://reference.sanity.io/_sanity/sdk-react/,建议查阅这些文档获取当前细节。资料未提供安装命令、收费或价格、平台支持范围等信息。