mcpField
D
docs-voice

docs-voice

github.com/reactjs开发11.8k68 次安装1 天前更新
代码仓库

关于 docs-voice

用于撰写 React 文档的风格指南技能,涵盖术语、语气、行文、代码、类比和版本表述,供需要统一 Learn、Reference 与 Blog 内容的作者使用。

主要功能

  1. 01React 术语大小写规范
  2. 02按页面类型划分语气
  3. 03术语与行文建议
  4. 04代码及版本写作规范

适用场景

  1. 01编辑 React API 文档
  2. 02统一 Learn 与 Blog 的行文
  3. 03撰写特定版本的 API 说明

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/reactjs/react.dev --skill docs-voice

安装后在 Claude Code 中输入/docs-voice确认已加载。

详细介绍

React 文档语气与风格

通用规则

  • 提及 React 概念时,在标题或将其作为独立概念时使用首字母大写:
    • 核心概念:Hook、Effect、State、Context、Ref、Component、Fragment
    • 并发功能:Transition、Action、Suspense
    • 服务端:Server Component、Client Component、Server Function、Server Action
    • 模式:Error Boundary
    • Canary:Activity、View Transition、Transition Type
    • 在正文中: 与描述词搭配时使用小写:“state variable”“state updates”“event handler”。概念独立出现或用于标题时使用首字母大写:“State is isolated and private”
    • 一般用法保持小写:“the page transitions”“takes an action”
  • 产品名称: ESLint、TypeScript、JavaScript、Next.js(不要使用小写)
  • 关键概念使用粗体: state variable、event handler
  • 新定义的术语使用斜体: event handlers
  • API 使用行内代码: useState、startTransition、<Suspense>
  • 避免使用: “simple”“easy”“just”以及时间估算
  • 将差异描述为“功能”,而非“优点/缺点”
  • 避免被动语态和行话

不同页面类型的语气

类型语气示例
学习对话式“下面来看看它是什么样的……”“你可能会好奇……”
参考技术性“在顶层调用 useState……”、“这个 Hook 会返回……”
博客准确聚焦事实,而非营销

注意: Pitfall 和 DeepDive 组件即使出现在参考页面中,也可以使用稍微偏对话式的表达(如“你可能会想……”“你可能会想尝试……”),因为它们属于解释性补充内容。

避免行话

模式: 先解释行为,再介绍术语。

✅ “React 会等事件处理函数中的所有代码运行完毕后,再处理状态更新。这称为 批处理。”

❌ “React 使用批处理,以原子方式处理状态更新。”

应避免或解释的术语:

行话通俗表达
atomic(原子性)全有或全无、合并处理
idempotent(幂等)输入相同,输出相同
deterministic(确定性)结果可预测、每次都相同
memoize(记忆化)记住结果,跳过重新计算
referentially transparent(引用透明)(避免使用——描述具体行为)
invariant(不变量)必须始终成立的规则
reify(具体化)(避免使用——描述所创建的内容)

参考页面中允许使用的技术术语:

  • “stale closures”——标准的 JS/React 术语,可在 Caveats 中使用
  • “stable identity”——React 术语,指在多次渲染之间保持一致的对象引用
  • “reactive”——React 术语,指发生变化时会触发重新渲染的值
  • 在参考页面中无需解释这些术语(读者通常已了解)

谨慎使用已有的类比——引入概念时使用一次,不要反复使用:

概念类比
Components/React厨房(组件是厨师,React 是服务员)
渲染阶段餐厅点餐(触发/渲染/提交)
状态批处理服务员收齐订单后再送到厨房
状态行为某一时刻的快照/照片
状态存储React 将状态“放在架子上”
状态用途组件的记忆
纯函数食谱(相同食材 → 相同菜肴)
纯函数数学公式(y = 2x)
Props可调节的“旋钮”
Children prop由父级填充的“空位”
Keys文件夹中的文件名
JSX 中的花括号“通向 JavaScript 的窗口”
声明式 UI出租车司机(告诉司机目的地,而不是逐步指路)
命令式 UI逐步导航
状态结构数据库规范化
RefsReact 不会跟踪的“秘密口袋”
Effects/RefsReact 的“逃生口”
ContextCSS 继承 /“传送”
自定义 Hooks设计系统

常见正文模式

错误与正确的代码:

\`\`\`js
// 🚩 Don't mutate state:
obj.x = 10;
\`\`\`

\`\`\`js
// ✅ Replace with new object:
setObj({ ...obj, x: 10 });
\`\`\`

表格对比:

| passing a function | calling a function |
| `onClick={handleClick}` | `onClick={handleClick()}` |

链接:

[Read about state](/learn/state-a-components-memory)
[See `useState` reference](/reference/react/useState)

代码风格

  • 优先使用 JSX,而非 createElement
  • 使用 const/let,绝不使用 var
  • 顶层函数优先使用具名函数声明
  • 对于需要保留 this 的回调,使用箭头函数

版本文档

当 API 在不同版本间发生变化时:

Starting in React 19, render `<Context>` as a provider:
\`\`\`js
<SomeContext value={value}>{children}</SomeContext>
\`\`\`

In older versions:
\`\`\`js
<SomeContext.Provider value={value}>{children}</SomeContext.Provider>
\`\`\`

模式:

  • 对于新 API,使用“从 React 19 开始……”
  • 对于旧模式,使用“在较旧版本的 React 中……”

评论

支持 Markdown