Skip to content

react hook 有哪些?

useCallback 和 useMemo 有什么区别?

都属于 React hooks 中的性能优化工具,避免不必要的重新计算和重新创建。

useCallback 记忆一个回调函数,返回的是一个记忆化后的回调函数,主要作用是在依赖变化时,返回的函数不会重新创建,减少不必要的函数创建和传递。 接受两个参数 回调函数和依赖项数组。 当依赖项数组中的任一依赖项发生变化的时候,useCallback会返回一个新的回调函数,否则返回上一次记忆化的回调函数。 主要用于防治子组件在每次渲染的时候重新创建回调函数,适用于将回到函数传递给子组件或使用在useEffect中的回调函数。

javascript
const memoizedCallback = useCallback(() => {
  console.log('callback run...')
}, [counter, list])

useMemo 用于记忆化计算的结果,返回的是一个记忆化之后的值。 在依赖变化时,返回的值不会重新计算,从而减少不必要的计算开销。

javascript
const memoizedValue = useMemo(() => {
  return 'some value'
}, [dependency1, dependency2])

useMemo 接收两个参数:计算函数和依赖项数组。 当依赖项数组中的任何一个依赖项发生变化时,useMemo 会重新计算并返回新的值,否则返回上一次的记忆化值。 主要用于防止在每次渲染时重新计算昂贵的计算结果,适用于计算操作的结果。

区别

useCallback 适用于记忆化回调函数,主要用于优化回调函数的传递和避免子组件重新渲染。 useCallback 的第一个参数是回调函数,第二个参数是依赖项数组。 useCallback 返回一个记忆化后的回调函数。

useMemo 适用于记忆化计算的结果,主要用于优化计算操作的结果。 useMemo 的第一个参数是计算函数,第二个参数是依赖项数组。 useMemo 返回一个记忆化后的值。