useMainStore.ts 649 B

12345678910111213141516171819202122232425262728
  1. import { Canceler } from 'axios';
  2. import { defineStore } from 'pinia';
  3. export interface MainStateType {
  4. cancelReqToken: Canceler[];
  5. }
  6. export interface MainActionsType {
  7. pushReqToken(cancelToken: Canceler): void;
  8. clearReqToken(): void;
  9. }
  10. export default defineStore<'main', MainStateType, {}, MainActionsType>('main', {
  11. state: () => ({
  12. cancelReqToken: [],
  13. }),
  14. actions: {
  15. pushReqToken(cancelToken) {
  16. this.cancelReqToken.push(cancelToken);
  17. },
  18. clearReqToken() {
  19. this.cancelReqToken.forEach((cancel) => {
  20. cancel('axios cancel by router change');
  21. });
  22. this.cancelReqToken = [];
  23. },
  24. },
  25. });