1. useState
用来在函数组件里存数据,数据变了会自动更新视图。
场景:计数器、开关状态(如弹窗显示/隐藏)。
Vue 对照:类似Vue 的 ref 或 reactive。
2. useEffect
处理副作用(比如调用接口、订阅事件),比如依赖数据改变时、挂载时执行。
场景:数据请求、事件监听、手动修改 DOM。
Vue 对照:Vue 的 watch 或 onMounted/onUpdated。
**useEffect依赖数组为空:**相当于 Vue 的 onMounted,只在组件挂载时执行一次。
3. useContext
跨组件传值,避免一层层 props 传递。
场景:组件深处、跨组件传值。
Vue 对照:Vue 的 provide/inject。
4. useReducer
复杂版的 useState,适合逻辑复杂的状态管理。
场景:表单多字段管理、购物车状态。
Vue 对照:Vuex 或 Pinia 的 store。
5. useMemo
缓存计算结果,避免重复计算。
场景:性能优化(如过滤大型列表)。
Vue 对照:Vue 的 computed。
6. useCallback
缓存函数,避免子组件不必要的重新渲染。
场景:父组件传递函数给子组件时优化性能。
useMemo 和 useCallback 的区别:useMemo 缓存值,useCallback 缓存函数。
7. useRef
存一个不会触发渲染的变量,或直接操作 DOM。
常用场景:输入框焦点控制、保存定时器 ID。
Vue 对照:Vue 的 ref。