import { Canceler } from 'axios'; import { defineStore } from 'pinia'; export interface MainStateType { cancelReqToken: Canceler[]; } export interface MainActionsType { pushReqToken(cancelToken: Canceler): void; clearReqToken(): void; } export default defineStore<'main', MainStateType, {}, MainActionsType>('main', { state: () => ({ cancelReqToken: [], }), actions: { pushReqToken(cancelToken) { this.cancelReqToken.push(cancelToken); }, clearReqToken() { this.cancelReqToken.forEach((cancel) => { cancel('axios cancel by router change'); }); this.cancelReqToken = []; }, }, });