جاوااسکریپت - چگونه از setInterval و clearInterval در Vue.js 3 استفاده کنیم؟


من در حال نوشتن یک برنامه هستم که از یک تایمر برای بهروزرسانی متغیرها هر ثانیه استفاده میکند. این برنامه از تابع «setInterval» برای شروع تایمر و از تابع «clearInterval» برای متوقف کردن آن استفاده میکند. و فکر نمیکنم روشی که برای این کار دارم کافی باشد.

من سعی کردم تایمر را به عنوان یک متغیر ref در تابع setup تعریف کنم و تایمر را در هوک چرخه عمر "onUnmounted" پاک کنم، مانند کد نمونه زیر:

<script setup lang="ts">
import { ref, onUnmounted } from "vue";

const timer = ref(setInterval(() => {/* Bla bla bla. */}, 1000));

onUnmounted(() => {
  clearInterval(timer.value);
})
<script>

اما فکر نمیکنم ضروری باشد تایمر واکنشگرا شود، آیا راه بهتری برای انجام این کار وجود دارد؟ یا کد من روش خوبی است؟

پاسخ شماره ۱

اگر میتوانید از کتابخانهها استفاده کنید، از کتابخانهها استفاده کنید https://vueuse.org/shared/useIntervalFn/

import { useIntervalFn } from '@vueuse/core'

const { pause, resume, isActive } = useIntervalFn(() => {
  /* your function */
}, 1000)

در غیر این صورت، یک ترکیبی بسازید

function useIntervalFn(cb: () => void, ms: number) {
   let int: number = 0;
   onMounted(() => int = setInterval(cb, ms));
   onUnmounted(() => clearInterval(int));
}