即使您的组件没有被 memo 包装,使用 useCallback 仍然有帮助。React 组件在重新渲染时会对其内部的事件处理程序、回调函数等再次创建新的函数,这可能导致无意义的渲染。使用 useCallback 可以有效地避免重新创建函数,提高性能。
例如,以下代码是一个没有被 memo 包装的组件,其中 handleClick 函数将在每次重新渲染时重新创建:
import React, { useState } from "react";
function Button(props) {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
return (
);
}
export default Button;
现在,如果我们使用 useCallback 并将 handleClick 函数作为依赖项传递,我们可以确保该函数仅在其依赖项发生更改时才会被重新创建:
import React, { useState, useCallback } from "react";
function Button(props) {
const [count, setCount] = useState(0);
const handleClick = useCallback(() => {
setCount(count + 1);
}, [count]);
return (
);
}
export default Button;