Как исправить проблемы с выдачей результатов поиска при изменения input?

Есть компонент. который ищет материалы при вводе поискового слова в input
Searchbox.vue

<template>
    <div>
        <input type="text" name="query" :placeholder="placeholder" v-model="query" v-on:keyup="fetch">
        <div class="search-box__result" v-show="query" ref="result_list" id="search-results">
            <ul v-if="results.length > 0">
                <li v-for="result in results.slice(0,10)" :key="result.id">
                    <!--  -->
                </li>
            </ul>
            <div class="search-box__message" v-else>По данному запросу ничего не найдено</div>
            <div class="search-box__loading"></div>
        </div>
    </div>
</template>

<script>

export default {
    data() {
        return {
            query: null,
            results: [],
        }
    },
    props: ['placeholder'],
    methods: {
        fetch() {
            axios.get('api/search/posts', { params: { query: this.query } })
                .then(response => {
                    this.results = response.data
                    this.nprogress.done();
                })
                .catch(error => {
                    console.log(error);
                });
        }
    }
}
</script>



Поиск работает нормально, но в его работе я постоянно встречаю баг: если быстро ввожу какую-то поисковую фразу, например PostName, в поисковой выдаче мне сначала покажется только этот пост, а затем сразу показываются результаты поиска из самого первого запроса (когда была введена первая буква поискового слова). Если я медленно побуквенно ввожу слово, все работает исправно, как только я ввожу его быстро, то правильная выдача подменяется какой-то из предыдущих.

В чем может быть причина такого поведения?
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
Надо отменять предыдущий запрос при запуске нового
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы