关于 react18-legacy-context
用于将 React 旧版 context 迁移到现代 context API 的技能。它强调协调 context 模块、提供者及所有消费者,并提供扫描命令和参考示例,帮助避免跨文件迁移遗漏。
主要功能
- 01定位旧版提供者和消费者
- 02协调跨文件迁移步骤
- 03创建 context 模块
- 04更新类组件和函数组件消费者
- 05检查旧版警告是否消失
适用场景
- 01为 React 19 升级做准备
- 02迁移单个旧版 context
- 03更新使用多个 context 的应用
- 04检查是否遗漏 context 消费者
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill react18-legacy-context安装后在 Claude Code 中输入/react18-legacy-context确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/context-file-template.mdmulti-context.mdsingle-context.md详细介绍
React 18 旧版 Context 迁移
旧版 context(contextTypes、childContextTypes、getChildContext)在 React 16.3 中已被弃用,并在 React 18.3.1 中发出警告。它在 React 19 中被移除。
这始终是跨文件迁移
与大多数一次只涉及一个文件的迁移不同,context 迁移需要协调:
- 创建 context 对象(通常是一个新文件)
- 更新 provider 组件
- 更新每一个消费者组件
遗漏任何一个消费者都会导致应用崩溃——它会从错误的 context 读取数据,或者得到 undefined。
迁移步骤(务必遵循此顺序)
Step 1: Find the provider (childContextTypes + getChildContext)
Step 2: Find ALL consumers (contextTypes)
Step 3: Create the context file
Step 4: Update the provider
Step 5: Update each consumer (class components → contextType, function components → useContext)
Step 6: Verify - run the app, check no legacy context warnings remain
扫描命令
# Find all providers
grep -rn "childContextTypes\|getChildContext" src/ --include="*.js" --include="*.jsx" | grep -v "\.test\."
# Find all consumers
grep -rn "contextTypes\s*=" src/ --include="*.js" --include="*.jsx" | grep -v "\.test\."
# Find this.context usage (may be legacy or modern - check which)
grep -rn "this\.context\." src/ --include="*.js" --include="*.jsx" | grep -v "\.test\."
参考文件
references/single-context.md- 单个 context(theme、auth 等)的完整迁移,包含 provider + 类消费者 + 函数消费者references/multi-context.md- 具有多个旧版 context 的应用(嵌套 provider、多个不同 context 的消费者)references/context-file-template.md- 新 context 模块的标准文件结构
评论
支持 Markdown