为什么 Hook 通常必须在组件顶层调用?
参考答案
React 依靠稳定的 Hook 调用结构关联各次渲染中的状态。把 useState 或 useEffect 放进条件、循环和提前返回之后,会导致调用关系不一致。Hook 也不能随意在普通工具函数中调用。
自定义 Hook 用于复用带状态或副作用的逻辑,不会自动让多个使用者共享同一份状态。共享状态需要提升到共同祖先、Context 或外部 store。命名 use 前缀配合 lint 规则能帮助发现错误。
某些特定 API(如 React 的 use)有不同的调用约束,应按其官方规则理解,不能把例外推广到所有 Hook。实际项目应启用对应 ESLint 规则,并处理依赖检查提示。