用途
该技能用于把 React 类组件中的字符串 ref 写法迁移到 React.createRef()。字符串 ref(即 ref="myInput" 配合 this.refs.myInput)在 React 16.3 中已被弃用,在 React 18.3.1 中会发出警告,并在 React 19 中被移除,因此需要迁移。
主要能力
技能提供统一的迁移规则,并针对不同使用场景给出模式索引:
- 单个 DOM 元素上的 ref → patterns.md#single-ref
- 一个组件中的多个 ref → patterns.md#multiple-refs
- 列表 / 动态 ref → patterns.md#list-refs
- 回调 ref(替代方案)→ patterns.md#callback-refs
- 传递给子组件的 ref → patterns.md#forwarded-refs
使用方式
迁移规则:每个字符串 ref 都迁移为 React.createRef()。
- 添加
refName = React.createRef();作为类字段(或在构造函数中) - 在 JSX 中将
ref="refName"替换为ref={this.refName} - 在所有位置将
this.refs.refName替换为this.refName.current
每个场景的完整前后对比见 references/patterns.md。
技能还提供扫描命令,用于查找代码库中的字符串 ref:
查找 JSX 中所有字符串 ref 赋值:
grep -rn 'ref="' src/ --include="*.js" --include="*.jsx" | grep -v "\.test\."
查找所有 this.refs 访问:
grep -rn "this.refs." src/ --include=".js" --include=".jsx" | grep -v ".test."
两者应一起迁移——对每个组件,把 ref="name" 与对应的 this.refs.name 访问作为一对来查找。
适用场景
适用于需要将使用字符串 ref 的 React 类组件升级到 React 18 / React 19 兼容写法的场景,尤其是存在单个 ref、多个 ref、列表动态 ref、回调 ref 或转发 ref 的组件。
限制
资料未提供该技能的具体安装方式、依赖要求、支持的文件类型范围或自动化程度等信息,暂未提供。