fix(router): 修复路径跳转时的 debounce 问题
- 在 go 函数中添加逻辑,当跳转到新路径时清除遗留的 debounce 状态 - 通过调用 debouncedGoFunc.cancel() 方法来取消上一次的延迟执行 - 这个修复确保了路由跳转的正确性和及时性,避免了潜在的性能问题pull/148/head
parent
0c2adc80f6
commit
a26208dd20
|
|
@ -1,7 +1,7 @@
|
|||
import $store from '@/sheep/store';
|
||||
import { showAuthModal, showShareModal } from '@/sheep/hooks/useModal';
|
||||
import { isNumber, isString, isEmpty, startsWith, isObject, isNil, clone } from 'lodash-es';
|
||||
import throttle from '@/sheep/helper/throttle';
|
||||
import { debounce } from 'lodash';
|
||||
|
||||
const _go = (
|
||||
path,
|
||||
|
|
@ -68,7 +68,7 @@ const _go = (
|
|||
url += `?${query}`;
|
||||
}
|
||||
|
||||
// 跳转底部导航
|
||||
// 跳转底部导航,TABBAR由Vite配置插件注入的,在uniReadPagesV3Plugin中
|
||||
if (TABBAR.includes(page)) {
|
||||
uni.switchTab({
|
||||
url,
|
||||
|
|
@ -89,11 +89,27 @@ const _go = (
|
|||
});
|
||||
};
|
||||
|
||||
// 限流 防止重复点击跳转
|
||||
// 防抖 防止重复点击跳转
|
||||
let go_args;
|
||||
const debouncedGoFunc = debounce(
|
||||
() => {
|
||||
_go(...go_args);
|
||||
},
|
||||
500,
|
||||
{
|
||||
//在延迟开始前立即调用事件
|
||||
leading: true,
|
||||
//在延时结束后不调用,保证事件只被触发一次
|
||||
trailing: false,
|
||||
}
|
||||
);
|
||||
function go(...args) {
|
||||
throttle(() => {
|
||||
_go(...args);
|
||||
});
|
||||
// 向新的路径跳转时清除遗留debounce的状态
|
||||
if (args !== go_args) {
|
||||
debouncedGoFunc.cancel();
|
||||
}
|
||||
go_args = args;
|
||||
debouncedGoFunc();
|
||||
}
|
||||
|
||||
function paramsToQuery(params) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue