- 始终使用带有 hooks 的函数式组件而不是类组件:
- 现代化开发:优先使用 React Hooks(如
useState,useEffect,useContext,useReducer,useCallback,useMemo等)进行状态管理和副作用处理,以符合 React 官方推荐的现代化开发范式。 - 代码简洁性:函数式组件通常比类组件更简洁,更易于阅读和理解,尤其是在处理逻辑复用时。
- 逻辑复用:通过自定义 Hooks,可以方便地在不同组件之间共享状态逻辑,避免了高阶组件(HOCs)和渲染属性(Render Props)带来的嵌套问题。
- 性能优化:结合
useCallback和useMemo等 Hooks,可以有效地进行性能优化,避免不必要的渲染。 - 可测试性:函数式组件和 Hooks 更容易进行单元测试。
- 示例:
// 函数式组件示例 import React, { useState, useEffect } from 'react'; function Counter() { const [count, setCount] = useState(0); useEffect(() => { document.title = `You clicked ${count} times`; }, [count]); return ( <div> <p>You clicked {count} times</p> <button => setCount(count + 1)}> Click me </button> </div> ); } - 特殊情况:仅在极少数需要使用
getSnapshotBeforeUpdate或componentDidCatch等生命周期方法时,才考虑使用类组件,但大多数场景下 Hooks 都能提供替代方案(如错误边界)。
- 现代化开发:优先使用 React Hooks(如
Apollo GRAPHQL React Functional Components Preference
在 React 组件中强制使用带有 hooks 的函数式组件
Apollo GRAPHQL React Functional Components Preference by liaosw97 · de7b3bf
npx skillmds@latest add liaosw97/apollo-graphql-react-functional-components-preference File contents
---name: apollo-graphql-react-functional-components-preferencedescription: 在 React 组件中强制使用带有 hooks 的函数式组件---- **始终使用带有 hooks 的函数式组件而不是类组件**: - **现代化开发**:优先使用 React Hooks(如 `useState`, `useEffect`, `useContext`, `useReducer`, `useCallback`, `useMemo` 等)进行状态管理和副作用处理,以符合 React 官方推荐的现代化开发范式。 - **代码简洁性**:函数式组件通常比类组件更简洁,更易于阅读和理解,尤其是在处理逻辑复用时。 - **逻辑复用**:通过自定义 Hooks,可以方便地在不同组件之间共享状态逻辑,避免了高阶组件(HOCs)和渲染属性(Render Props)带来的嵌套问题。 - **性能优化**:结合 `useCallback` 和 `useMemo` 等 Hooks,可以有效地进行性能优化,避免不必要的渲染。 - **可测试性**:函数式组件和 Hooks 更容易进行单元测试。 - **示例**: ```javascript // 函数式组件示例 import React, { useState, useEffect } from 'react'; function Counter() { const [count, setCount] = useState(0); useEffect(() => { document.title = `You clicked ${count} times`; }, [count]); return ( <div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}> Click me </button> </div> ); } ``` - **特殊情况**:仅在极少数需要使用 `getSnapshotBeforeUpdate` 或 `componentDidCatch` 等生命周期方法时,才考虑使用类组件,但大多数场景下 Hooks 都能提供替代方案(如错误边界)。
liaosw97/awesome-rules-skills/tree/main/plugins/apollo-graphql/skills/apollo-graphql-react-functional-components-preference commit de7b3bfe64
Frequently asked questions
Run npx skillmds@latest add liaosw97/apollo-graphql-react-functional-components-preference in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
在 React 组件中强制使用带有 hooks 的函数式组件 It is listed under Web & Frontend on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
liaosw97 (@liaosw97) published this skill. Their other Agent Skills are listed on their SkillMD profile.