用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cockroachdb/cockroach --skill react-class-to-functional命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | react-class-to-functional |
| description | Convert React class components to functional components with hooks |
| argument-hint | <file-path> |
Convert the React class component at $ARGUMENTS to a functional component using React hooks.
this.state = { ... } → individual useState hooksthis.setState({ key: value }) → setter functionthis.setState(prev => ...) → functional update formsetExpandedRows(prev => { const next = new Set(prev); next.add(key); return next; });
| Class | Functional |
|---|---|
componentDidMount | useEffect(fn, []) |
componentDidUpdate | useEffect(fn) or useEffect(fn, [deps]) |
componentWillUnmount | useEffect(() => cleanup, []) |
| mount + unmount | single useEffect with cleanup return |
React.createRef() → useRef(null)static contextType → useContext(MyContext)this.timer) → useRefcreateSelector (reselect) → useMemo with explicit dependency arraythis.props.x → destructured propsstatic defaultProps → default parameter values?) in the interface:
interface Props { sortSetting?: SortSetting; }
function Component({ sortSetting = defaultValue }: Props) { ... }
this.setState(update, callback) has no direct hook equivalent. Use ref + useEffect:
const pendingRef = useRef(false);
const prevRef = useRef(value);
const onUpdate = useCallback(() => {
pendingRef.current = true;
setValue(newValue);
}, []);
useEffect(() => {
if (pendingRef.current && prevRef.current !== value) {
pendingRef.current = false;
doCallback();
}
prevRef.current = value;
}, [value, doCallback]);
class MyTable extends SortedTable<Row> {} → const MyTable = SortedTable<Row>;<SortedTable<Row> {...props} />this. references removeduseCallback is actually called)package.json, run ESLint (fix) and Tests