@@ -31,7 +31,9 @@ const {
3131 status,
3232 data : playersStats
3333} = await useLazyAsyncData (async () => {
34+ fetching .value = true
3435 const response = await $fetch .raw (` ${apiBase }/player-stats?search=${searchInput .value } ` )
36+ fetching .value = false
3537
3638 totalCount = parseInt (response .headers .get (" X-Total-Count" ) || response ._data .length .toString ())
3739
@@ -43,7 +45,7 @@ const {
4345
4446const onScroll = () => {
4547 if (! pageArea .value ) return
46- if (window .scrollY + window .innerHeight < pageArea .value .offsetHeight + pageArea .value .offsetTop ) return ;
48+ if (window .scrollY + window .innerHeight < pageArea .value .offsetHeight + pageArea .value .offsetTop ) return
4749
4850 debounce (async () => {
4951 const offset = getOffset ()
@@ -63,6 +65,10 @@ onMounted(() => {
6365
6466onUnmounted (() => {
6567 window .removeEventListener (" scroll" , onScroll )
68+ if (timeoutId ) {
69+ clearTimeout (timeoutId );
70+ }
71+ playersStats .value = []
6672})
6773
6874const input = (e : InputEvent ) => {
@@ -72,12 +78,11 @@ const input = (e: InputEvent) => {
7278
7379const search = (input : string ) => {
7480 searchInput .value = input
81+ playersStats .value = []
7582 execute ()
7683}
7784
7885const getOffset = (): number => status .value === " success" ? playersStats .value ?.length || 0 : 0
79-
80- const isFetching = (): boolean => ! playersStats .value || fetching .value
8186 </script >
8287
8388<template >
@@ -95,7 +100,7 @@ const isFetching = (): boolean => !playersStats.value || fetching.value
95100 <div v-if =" playersStats" class =" flex flex-wrap gap-4" >
96101 <PlayerCard v-for =" stats in playersStats" :player-stats =" stats" />
97102 </div >
98- <div v-if =" isFetching() " class =" flex justify-center" >
103+ <div v-if =" fetching " class =" flex justify-center" >
99104 <SpinningWheel />
100105 </div >
101106 </div >
0 commit comments