用途:该技能提供 React 在 hooks、Effect、ref 和组件设计方面的实践模式,覆盖逃生舱、反模式与 Effect 的正确用法,并建议与 TypeScript 最佳实践技能一起加载。
主要能力:核心原则是 Effect 属于逃生舱,用于与外部系统同步,例如订阅浏览器 API(WebSocket、IntersectionObserver、resize)、连接非 React 第三方库、在 window/document 上注册与清理事件监听、挂载时取数(更推荐 React Query 或框架取数)、控制非 React DOM 元素(视频播放器、地图、弹窗)。同时明确不应使用 Effect 的场景:派生状态应在渲染期间计算;昂贵计算用 useMemo;props 变化重置状态用 key;用户事件逻辑放事件处理器;通知父组件在事件处理器中同时更新,或做成完全受控组件;避免 Effect 链,改为在事件处理器中计算与更新。
依赖与清理:不要用 eslint-disable 压制依赖告警,应修正代码;用更新函数移除状态依赖;把对象或函数移入 Effect 内部;非响应式逻辑用 useEffectEvent,回调 props 也可用其包裹。订阅必须清理,取数可用 ignore 标志避免旧请求写入过期数据;开发环境双重触发是刻意行为,应修好清理而非用 ref 掩盖。
ref 与自定义 Hook:ref 用于不影响渲染的值,禁止在渲染期间读写 ref.current;动态列表用 ref 回调配合 Map;useImperativeHandle 控制对外暴露。自定义 Hook 共享逻辑而非状态,只有使用 hooks 才以 use 开头,避免 useMount 等生命周期式 Hook,保持聚焦。组件模式包括受控与非受控、用组合或 Context 替代 prop 层层传递,以及需要立即读取 DOM 时使用 flushSync。
限制:资料未提供安装命令、平台支持、收费或价格信息,暂未提供。