当前位置:首页 > VUE

vue列表查询实现

2026-02-10 18:39:17VUE

实现 Vue 列表查询功能

1. 数据绑定与列表渲染

使用 v-for 指令渲染列表数据,绑定到组件的 dataprops

<template>
  <ul>
    <li v-for="item in filteredList" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      rawList: [{id: 1, name: 'Apple'}, {id: 2, name: 'Banana'}],
      searchQuery: ''
    }
  }
}
</script>

2. 计算属性实现过滤

通过计算属性动态过滤列表,避免每次输入都触发方法调用:

computed: {
  filteredList() {
    return this.rawList.filter(item => 
      item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
    )
  }
}

3. 添加搜索输入框

在模板中添加搜索输入框,使用 v-model 双向绑定搜索关键词:

<input 
  type="text" 
  v-model="searchQuery" 
  placeholder="Search..."
  class="search-input"
>

4. 优化搜索性能

对于大数据量列表,可添加防抖处理:

import _ from 'lodash';

export default {
  methods: {
    search: _.debounce(function() {
      // 执行搜索逻辑
    }, 300)
  }
}

5. 服务端搜索实现

当数据量较大时,可改为服务端搜索:

methods: {
  async fetchSearchResults() {
    const res = await axios.get('/api/items', {
      params: { q: this.searchQuery }
    });
    this.filteredList = res.data;
  }
},
watch: {
  searchQuery(newVal) {
    if(newVal.length > 2) this.fetchSearchResults();
  }
}

6. 高级过滤功能

实现多条件复合搜索:

computed: {
  filteredList() {
    return this.rawList.filter(item => {
      const matchesName = item.name.toLowerCase().includes(this.searchQuery.toLowerCase());
      const matchesCategory = this.selectedCategory ? 
        item.category === this.selectedCategory : true;
      return matchesName && matchesCategory;
    });
  }
}

7. 空状态提示

添加搜索结果为空时的提示:

vue列表查询实现

<template>
  <div v-if="filteredList.length === 0" class="empty-state">
    No items found
  </div>
</template>

标签: 列表vue
分享给朋友:

相关文章

vue实现下拉菜单

vue实现下拉菜单

实现下拉菜单的基本思路 使用Vue实现下拉菜单可以通过动态绑定v-show或v-if控制菜单显示隐藏,结合事件监听(如@click或@mouseenter)触发状态切换。以下是两种常见实现方式: 方…

vue实现检测数组

vue实现检测数组

Vue 中检测数组变化的方法 Vue 的响应式系统无法直接检测到数组的某些变化,因为 JavaScript 的限制。以下是一些解决方案: 使用 Vue.set 或 this.$set Vue 提供…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue 动画实现

vue 动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要分为内置组件和第三方库集成。 使用 Vue 内置过渡组件 Vue 的 <transition> 和 <transiti…

vue动画实现

vue动画实现

Vue动画实现方法 Vue提供了多种方式实现动画效果,主要通过内置组件和第三方库完成。 使用<transition>组件 Vue内置的<transition>组件可以为元素添…

vue实现阻塞

vue实现阻塞

Vue 实现阻塞的方法 在 Vue 中实现阻塞操作通常涉及异步控制、状态管理或生命周期钩子的使用。以下是几种常见方法: 使用 async/await 处理异步阻塞 通过 async/await 可…