mirror of
https://github.com/certd/certd.git
synced 2026-07-30 17:27:46 +08:00
refactor(ui): 统一使用useMounted钩子简化页面初始化逻辑
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { onActivated, onMounted } from "vue";
|
||||
|
||||
/**
|
||||
* 可靠的页面刷新钩子:
|
||||
* - 如果组件实际被 KeepAlive 缓存命中,由 onActivated 触发 init;
|
||||
* - 如果没有被缓存,由 onMounted 兜底触发,避免不刷新也不触发 onActivated。
|
||||
*/
|
||||
export function useMounted(init: () => void | Promise<void>) {
|
||||
let activated = false;
|
||||
|
||||
onActivated(() => {
|
||||
activated = true;
|
||||
init();
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
// 让 onActivated 有机会先执行;组件未被 KeepAlive 缓存时 onActivated 不会触发,由这里兜底。
|
||||
setTimeout(() => {
|
||||
if (!activated) {
|
||||
init();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user