React Hooks API之useRequest是支持冷启动➕手工请求模式的,这种模式下可能会造成频繁请求同一个接口,造成的后果是数据抖动或网络性能浪费。所以,一旦在React项目中,有类似网络请求场景出现时候,一定要设置两个参数,具体如下:
1. debounceWait:防抖等待时间, 单位为毫秒,设置后,进入防抖模式;
2. throttleWait:节流等待时间, 单位为毫秒,设置后,进入节流模式。
下面,分别给出代码示例:
一、防抖
const DemoFC: React.FC = () => {
const [para1, setPara1] = useState('默认值');
const [para2, setPara2] = useState('默认值');
const { data: dataList,run, refresh } = useRequest(() => {
return getDataList({
para1,
para2
});
}, {
manual: true, // 手动
debounceWait: 300,
onSuccess: (res) => {
console.log(res.data);//列表值
}
});
useEffect(() => {
run({'para1值','para2值'});
}, [para1,para2]);
}
二、节流
const DemoFC: React.FC = () => {
const [para1, setPara1] = useState('默认值');
const [para2, setPara2] = useState('默认值');
const { data: dataList,run, refresh } = useRequest(() => {
return getDataList({
para1,
para2
});
}, {
manual: true, // 手动
throttleWait: 300,
onSuccess: (res) => {
console.log(res.data);//列表值
}
});
useEffect(() => {
run({'para1值','para2值'});
}, [para1,para2]);
}
参数debounceWait
和throttleWait
,要设置多少毫秒,要根据实际情况而定。