React中常用Hooks总结
1.useState
React中的 useState 其实就相当于Vue中的ref()和reactive() ,生成响应式数据。
在Vue中数据使用响应式对象( Proxy),Vue会对数据进行劫持,当数据发生改变的时候,Vue会调用Render函数对视图进行更新。reat使用下面的setX()函数调用render。
React.js 使用一种称为虚拟 DOM(Virtual DOM)的机制来实现高效的响应式更新。当状态(State)发生变化时,React.js 会重新计算虚拟 DOM 树,并与之前的虚拟 DOM 树进行比较,找出需要更新的部分,然后仅更新这些部分到实际 DOM。这样可以减少对实际 DOM 的操作,提高性能。
const [x, setX] = useState(0)
//使用setX改变x的值
//x的值可以直接使用
2.useRef
useRef
是 React 提供的一个 Hook,用于在函数组件中持有一个可变的引用值,该值在组件的整个生命周期中保持不变,而不会引发重新渲染。一般用来访问和操作 DOM 元素: 使用 useRef 来持有对 DOM 元素的引用,以便直接操作这些元素。也可以用于防抖和节流函数中,存储最后一次执行函数的时间戳或计时器 ID。
const Ref = useRef(null)
<input ref={Ref}/>// Ref.current 就可以定位到这个input组件
3.useMemo
useMemo相当于 Vue 计算属性(computed),用于优化性能,通过在依赖项未发生变化时缓存计算结果,从而避免不必要的重复计算。我们可以使用 useMemo 来缓存一些计算结果,使得只有在依赖项变化时才重新计算。
- 用途:记忆化某个计算结果,只有在依赖项改变时才重新计算。
- 返回值:返回的是计算结果的值。
- 常见用法:用于优化复杂计算或昂贵的计算,以避免每次渲染时都重新计算。
4.useCallback
useCallback 是一个用于性能优化的钩子,它返回一个记忆的回调函数。这对于在子组件中传递回调函数特别有用,可以防止不必要的重新渲染。
- 用途:记忆化函数,只有在依赖项改变时才返回新的函数实例。
- 返回值:返回的是记忆化的函数。
- 常见用法:用于优化传递给子组件的回调函数,避免因函数引用变化导致的子组件不必要重新渲染。
5.useEffect
组件挂载完成之后 或 组件数据更新完成之后 执行 就像vue的onmounted,updated。
6.useReducer
向组件里面添加一个 reducer。建立store的,可以和redux配合使用。