Local MCP Server
在Termux中运行本地MCP服务器,支持Ollama模型的文件读取与命令执行。
下载 11
自动检测 React 组件的性能、可访问性与状态管理问题,识别优化机会。
openclaw skills install @charlie-morrison/react-component-auditor命令、参数、文件名以原文为准
对 React 组件进行性能瓶颈、无障碍访问问题、钩子使用正确性、属性设计缺陷以及不必要的重新渲染检查。识别记忆化机会、过时闭包错误和状态管理反模式。
"审计我的 React 组件性能"
"检查不必要的重新渲染"
"审查组件中的钩子使用情况"
"审计 React 应用的无障碍访问性"find src -name "*.tsx" -o -name "*.jsx" | head -30
grep -rn "export.*function\|export default\|React.FC\|React.memo" src/components/ | head -30重新渲染检测:
React.memo 且接收对象/数组类型属性的组件useCallback 包裹useMemo 优化打包影响:
useEffect 依赖项缺失(存在过时闭包问题)useEffect 依赖项过多(执行频率过高)useEffect 缺少清理函数(定时器、订阅等导致内存泄漏)useState 处理派生状态(应通过计算得出)useRef 存储本应由 useState 管理的值(不会触发重新渲染)aria-labelalt 文本isNotVisible)children 模式与渲染属性或组合方式的选择## React 组件审计报告
**组件数量:** 45 | **自定义钩子数量:** 12
### 🔴 严重问题(3项)
1. **useEffect 中的过时闭包** — UserProfile.tsx:34
`userId` 在依赖数组中,但 `fetchUser` 捕获了过时的 `token`
→ 将 `token` 添加到依赖项,或对 `fetchUser` 使用 `useCallback`
2. **上下文引发的重新渲染风暴** — AppProvider.tsx
单个上下文包含 12 个值,任意变更都会重新渲染所有消费者
→ 拆分为 AuthContext、ThemeContext、UserContext
3. **缺少键盘支持** — DropdownMenu.tsx
自定义下拉菜单无键盘导航(Enter、Escape、方向键)
→ 添加 `onKeyDown` 处理器并设置 `aria-expanded`
### 🟡 改进建议(5项)
4. 8 个组件可受益于 `React.memo`(父组件稳定)
5. 12 个 `onClick` 处理函数使用内联箭头函数
6. 3 个 `useEffect` 缺少清理函数(存在定时器或订阅泄漏风险)
7. DashboardPage 组件拥有 23 个属性 —— 建议拆分为子组件
8. 5 个表单中输入框缺少 `htmlFor` / `id` 标签关联
### ✅ 良好实践
- 数据获取类自定义钩子包含加载和错误状态
- 正确使用 Suspense 边界并配置 fallback
- 路由级别设置错误边界
- 组件文件结构保持一致已收录 3 个 Skill