Skip to content

useCallbackOncePerRender ​

useCallbackOncePerRender 是一个确保回调函数无论被调用多少次都只执行一次的 React Hook。它适用于那些即使组件重复渲染也不应重复执行的一次性操作。

接口 ​

ts
function useCallbackOncePerRender<F extends (...args: any[]) => void>(
  callback: () => void,
  deps: DependencyList
): (...args: any[]) => void;

参数 ​

  • callbackrequired · () => void

    只执行一次的回调函数。

  • depsrequired · DependencyList

    依赖数组。当依赖发生变化时,会触发新的一次性执行。

返回值 ​

  • (...args: any[]) => void

    一个记忆化函数,在依赖发生变化之前只会执行一次。

示例 ​

tsx
import { useCallbackOncePerRender } from 'react-simplikit';

function Component() {
  const handleOneTimeEvent = useCallbackOncePerRender(() => {
    console.log('This will only run once');
  }, []);

  return <button onClick={handleOneTimeEvent}>Click me</button>;
}
tsx
// With dependencies
function TrackingComponent({ userId }: { userId: string }) {
  const trackUserVisit = useCallbackOncePerRender(() => {
    analytics.trackVisit(userId);
  }, [userId]);

  useEffect(() => {
    trackUserVisit();
  }, [trackUserVisit]);

  return <div>User page</div>;
}

基于 MIT 许可证发布。