Apabila menggunakan @pinia/nuxt, permintaan HTTP yang dilaksanakan dalam gelung setInterval dilaksanakan pada setiap lelaran setInterval.
<p>Saya cuba membina pemasa menggunakan @pinia/nuxt dan nuxt 3. Apabila pemasa bermula, saya juga ingin memulakan permintaan HTTP untuk menyegerakkan pangkalan data saya. </p><p>Masalah yang saya hadapi ialah apabila saya memanggil tindakan permulaan, permintaan HTTP dilaksanakan pada setiap lelaran gelung setInterval, sedangkan saya hanya mahu ia dilaksanakan sekali. </p><p>Berikut ialah modul pinia saya. Saya memanggil tindakan permulaan melalui acara onClick dalam komponen. </p><p><kod></kod><kod></kod></p>
<pre class="brush:php;toolbar:false;">nyatakan: () =>
pemasa: {
id: null,
isRunning: palsu,
masa: 5,
pemasa: 0,
negeri: null,
} sebagai Pemasa,
}),
tindakan: {
mula() {
this.timer.isRunning = benar
this.syncTimer()
jika (!this.timer.timer) {
this.timer.timer = setInterval(() => {
if (this.timer.time > 0) {
this.timer.time--
} lain {
clearInterval(this.timer.timer)
this.reset()
}
}, 1000)
}
},
berhenti() {
this.timer.isRunning = palsu
clearInterval(this.timer.timer)
this.timer.timer = 0
},
set semula() {
this.stop()
this.timer.time = 1500
},
syncTimer() {
backendAPI<Pemasa>('/api/timer', {
kaedah: 'POST',
badan: this.timer
}).then(({ ralat, data }) => {
jika (!error.value) {
const id = data.value?.id ??
this.timer.id = id
this.timer.state = "dicipta"
}
})
}
}</pre>
<p>Fail packages.json saya adalah seperti berikut:</p>
<pre class="brush:php;toolbar:false;">"devDependencies": {
"@fortawesome/fontawesome-free": "^6.4.0",
"@fullcalendar/core": "^6.1.8",
"@fullcalendar/daygrid": "^6.1.8",
"@fullcalendar/interaction": "^6.1.8",
"@fullcalendar/timegrid": "^6.1.8",
"@fullcalendar/vue3": "^6.1.8",
"@iconify/vue": "^4.1.1",
"@kevinmarrec/nuxt-pwa": "^0.17.0",
"@mdi/font": "^7.2.96",
"@nuxtjs/google-fonts": "^3.0.0",
"@pinia-plugin-persistedstate/nuxt": "^1.1.1",
"nuxt": "3.4.2",
"sass": "^1.62.0",
"vuetify": "^3.1.15"
},
"kebergantungan": {
"@pinia/nuxt": "^0.4.11",
"pinia": "^2.1.3",
"vite-plugin-vuetify": "^1.0.2"
}</pre>
<p><br /></p>