1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Vue3でsetIntervalで定期的にAPI連携する際のTips

Posted at

はじめに

全国1億2623万人のGARNET CROWファンの皆さん、こんにちは
@garnetddolphin です。
先日Vue3で定期的にAPIからデータを取得し、更新するというコードを書きました。
SPAでページを移動した際にclearIntervalが設定されておらず、setIntervalが残り続けてハマったのでTipsとして公開します。

実装

hoge.vue
<script lang="ts">
import { defineComponent } from "vue"
export default defineComponent({



    data() {
		return {
            // clearIntervalで削除するためタイマーを宣言しておく
			updateTimer: 0,
		}
	},
	methods: {
    async fetchAPIData(): Promise<void> {
        // API実行処理
    },
	async mounted() {
        // 宣言したタイマーにsetIntervalで実行する処理を代入
		this.updateTimer = setInterval(async () => {
			await this.fetchAPIData()
		}, 30000)
	},
	unmounted() {
        // ページを移動した際(コンポーネントインスタンスがアンマウントされた際)にはsetIntervalを削除する
        // Vue3のライフサイクルフック unmountedでタイマーをクリアする
		clearInterval(this.updateTimer)
	},
})
</script>

最後に

えるしっているか
ふろんとえんどは
おもしろい

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?