useThrottleFn
?用于創建一個節流函數,確保該函數在指定時間內最多執行一次。
一、基本使用
import { useThrottleFn } from 'ahooks';
import { Button, Space } from 'antd';const ThrottleDemo = () => {const { run, cancel, flush } = useThrottleFn((message) => {console.log(message, new Date().toISOString());},{ wait: 2000,leading: true,trailing: true });return (<Space><Button onClick={() => run('常規調用')}>觸發節流函數</Button><Button onClick={cancel}>取消待執行</Button><Button onClick={flush}>立即執行待調用</Button></Space>);
};
二、參數說明
2.1 配置項
useThrottleFn
?的第二個參數是一個配置對象,可以設置以下選項:
主要配置項
wait?(number)
節流等待時間,單位毫秒
默認值:
1000
?(1秒)示例:
{ wait: 500 }
?表示500毫秒內最多執行一次
leading?(boolean)
是否在節流開始前立即執行函數
默認值:
true
如果設為?
false
,第一次調用不會立即執行
trailing?(boolean)
是否在節流結束后執行函數
默認值:
true
如果設為?
false
,最后一次調用不會在延遲結束后執行
高級配置項
maxWait?(number)
最大等待時間,保證在超過此時間后一定會執行一次
示例:
{ wait: 500, maxWait: 2000 }
?表示即使持續觸發,至少每2秒會執行一次
2.2 返回值
run?(Function)
觸發執行節流函數的入口
調用時會根據配置的節流規則決定是否執行原函數
可以傳遞參數給原函數
cancel?(Function)
取消所有待執行的節流函數調用
清空節流計時器
flush?(Function)
立即執行當前待執行的節流函數(如果有)
不會重置節流計時器