在 React 中,“钩子(Hooks)” 是指从 React 16.8 开始引入的一组函数(如 useState、useEffect、useRef 等),用来在函数组件中使用状态和其他 React 特性。
之所以要使用钩子,主要有以下几个核心原因:
在 Hooks 出现之前:
props,不能保存状态,也不能使用生命周期state 和生命周期方法Hooks 出现后:
function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
✅ 函数组件也能管理状态,写法更简洁。
类组件有一些常见痛点:
this 指向容易混乱componentDidMount 里做多件不相关的事)Hooks 用更直观的方式组织代码:
useEffect(() => {
document.title = `计数:${count}`;
}, [count]);
✅ 相关逻辑写在一起,代码更清晰。
以前复用状态逻辑要用:
现在可以用自定义 Hook:
function useWindowWidth() {
const [width, setWidth] = useState(window.innerWidth);
useEffect(() => {
const onResize = () => setWidth(window.innerWidth);
window.addEventListener('resize', onResize);
return () => window.removeEventListener('resize', onResize);
}, []);
return width;
}
✅ 不需要额外组件嵌套,复用更自然。
React 本身偏向“UI = f(state)”的理念:
React 官方明确表示:
Hooks 是未来 React 的主流写法
新项目几乎都使用函数组件 + Hooks,类组件逐渐被视为“遗留方案”。
React 使用钩子,是为了让函数组件更强大、代码更简洁、逻辑更易复用,同时避免类组件的复杂性。
如果你愿意,我也可以:
useState / useEffect 使用场景免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。