Loading indicator with Vue InstantSearch
You can display a loading indicator to inform users on a slow connection that their search is still in progress.
Use InstantSearch’s status
indicator to decide when to show a loading indicator. The status
can be one of the following:
loading
: The search is in progress.stalled
: The search is in progress, but the response is taking longer than expected.error
: The search failed.idle
: The search succeeded.
Best practice is to display a loading indicator only when status
is stalled
, not during a standard (fast) search. Tweak the timing of the stalled
status by setting the stalledSearchDelay
option.
You can then use this condition to display a loading indicator:
1
2
3
4
5
6
7
8
9
<template>
<ais-state-results>
<template v-slot="{ status }">
<p v-show="status === 'stalled'">
Loading search results
</p>
</template>
</ais-state-results>
</template>
If you want the loading indicator to display as soon as the search starts, use the loading
status in combination with stalled
:
1
2
3
4
5
6
7
8
9
<template>
<ais-state-results>
<template v-slot="{ status }">
<p v-show="status === 'loading' || status === 'stalled'">
Loading search results
</p>
</template>
</ais-state-results>
</template>