SuperAPI AI 工具集

react18-string-refs

编程与开发

查看项目

更新于 10-14 19:07

技能介绍

用途

该技能用于把 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()。

  1. 添加 refName = React.createRef(); 作为类字段(或在构造函数中)
  2. 在 JSX 中将 ref="refName" 替换为 ref={this.refName}
  3. 在所有位置将 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 的组件。

限制

资料未提供该技能的具体安装方式、依赖要求、支持的文件类型范围或自动化程度等信息,暂未提供。