React
有点类似useState,只是其目标对象是方法fn
即暂存方法,当进行重新渲染时,子组件不会因为重新渲染而重新渲染
如下示例,当点击button的时候,会increaseCount,然后整个Index组件会刷新,
这里假如不使用useCallback,那么handleClick将重新赋值,即会引动子组件Button进行重新渲染
但是因为使用了useCallback,返回的handleClick是老的引用地址,并没有给到Button新的props,所以不会重新渲染Button
import React, { useState, useCallback, memo } from 'react'
const Button = memo(({ handleClick }) => {
return (
<button onClick={handleClick}>Click!</button>
)
})
const Index = () => {
const [clickCount, increaseCount] = useState(0);
// 使用 useCallback 将 handleClick 缓存起来
const handleClick = useCallback(() => {
increaseCount(count => count + 1);
},[])
return (
<div>
<p>{clickCount}</p>
<Button handleClick={ handleClick } />
</div>
)
}
export default Index
参考: