Skip to content

Commit 13c8af1

Browse files
committed
some optimization
1 parent 42bae19 commit 13c8af1

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/views/Home.vue

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,19 @@ const handleScroll = (): void => {
5252
const fullText = 'Gõ không gạch chân cực mượt';
5353
const displayText = ref<string>('');
5454
const typingSpeed = 100;
55+
let typingTimer: ReturnType<typeof setInterval>;
56+
let resetTimer: ReturnType<typeof setTimeout>;
5557
5658
const startTyping = () => {
5759
let i = 0;
5860
displayText.value = '';
59-
const timer = setInterval(() => {
61+
typingTimer = setInterval(() => {
6062
if (i < fullText.length) {
6163
displayText.value += fullText.charAt(i);
6264
i++;
6365
} else {
64-
clearInterval(timer);
65-
setTimeout(startTyping, 3000);
66+
clearInterval(typingTimer);
67+
resetTimer = setTimeout(startTyping, 3000);
6668
}
6769
}, typingSpeed);
6870
};
@@ -118,7 +120,11 @@ onMounted(() => {
118120
fetchGithubStars();
119121
});
120122
121-
onUnmounted(() => window.removeEventListener('scroll', handleScroll));
123+
onUnmounted(() => {
124+
window.removeEventListener('scroll', handleScroll);
125+
clearInterval(typingTimer);
126+
clearTimeout(resetTimer);
127+
});
122128
123129
// --- DATA ---
124130
interface PackageInfo {
@@ -521,7 +527,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
521527

522528
<div class="custom-card setup-wrapper">
523529
<el-tabs v-model="activeOS">
524-
<el-tab-pane name="arch">
530+
<el-tab-pane lazy name="arch">
525531
<template #label
526532
><div class="tab-label">
527533
<v-icon name="si-archlinux" /> Arch Linux
@@ -551,7 +557,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
551557
</div>
552558
</el-tab-pane>
553559

554-
<el-tab-pane name="debian">
560+
<el-tab-pane lazy name="debian">
555561
<template #label
556562
><div class="tab-label">
557563
<v-icon name="si-debian" /> Debian
@@ -577,7 +583,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
577583
</div>
578584
</el-tab-pane>
579585

580-
<el-tab-pane name="ubuntu">
586+
<el-tab-pane lazy name="ubuntu">
581587
<template #label
582588
><div class="tab-label">
583589
<v-icon name="si-ubuntu" /> Ubuntu
@@ -603,7 +609,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
603609
</div>
604610
</el-tab-pane>
605611

606-
<el-tab-pane name="fedora">
612+
<el-tab-pane lazy name="fedora">
607613
<template #label
608614
><div class="tab-label">
609615
<v-icon name="si-fedora" /> Fedora
@@ -622,7 +628,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
622628
</div>
623629
</el-tab-pane>
624630

625-
<el-tab-pane name="opensuse">
631+
<el-tab-pane lazy name="opensuse">
626632
<template #label
627633
><div class="tab-label">
628634
<v-icon name="si-opensuse" /> openSUSE
@@ -641,7 +647,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
641647
</div>
642648
</el-tab-pane>
643649

644-
<el-tab-pane name="nixos">
650+
<el-tab-pane lazy name="nixos">
645651
<template #label
646652
><div class="tab-label">
647653
<v-icon name="si-nixos" /> NixOS
@@ -663,7 +669,7 @@ const copyToClipboard = async (text: string | undefined): Promise<void> => {
663669
</div>
664670
</el-tab-pane>
665671

666-
<el-tab-pane name="github">
672+
<el-tab-pane lazy name="github">
667673
<template #label
668674
><div class="tab-label">
669675
<v-icon name="si-github" /> Releases

0 commit comments

Comments
 (0)