当前位置:首页 > VUE

vue实现列表查询功能

2026-01-22 05:11:12VUE

实现列表查询功能的基本步骤

在Vue中实现列表查询功能通常涉及数据绑定、事件处理和API调用。以下是具体实现方法。

数据绑定与列表渲染

使用v-for指令渲染列表数据,确保数据响应式更新。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索..." />
    <ul>
      <li v-for="item in filteredList" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

处理查询逻辑

通过计算属性filteredList实现实时过滤,避免频繁触发方法调用。

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: 'Apple' },
        { id: 2, name: 'Banana' },
        { id: 3, name: 'Orange' }
      ]
    }
  },
  computed: {
    filteredList() {
      return this.items.filter(item => 
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

异步数据加载

结合axiosfetch从后端API获取数据,并处理加载状态。

<script>
import axios from 'axios';

export default {
  data() {
    return {
      searchQuery: '',
      items: [],
      isLoading: false
    }
  },
  async created() {
    this.isLoading = true;
    try {
      const response = await axios.get('/api/items');
      this.items = response.data;
    } catch (error) {
      console.error(error);
    } finally {
      this.isLoading = false;
    }
  },
  computed: {
    filteredList() {
      return this.items.filter(item => 
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

优化查询性能

对于大数据量列表,使用防抖(debounce)减少频繁查询带来的性能问题。

<script>
import _ from 'lodash';

export default {
  data() {
    return {
      searchQuery: '',
      items: []
    }
  },
  created() {
    this.debouncedFilter = _.debounce(this.fetchItems, 300);
  },
  watch: {
    searchQuery() {
      this.debouncedFilter();
    }
  },
  methods: {
    async fetchItems() {
      const response = await axios.get('/api/items', {
        params: { q: this.searchQuery }
      });
      this.items = response.data;
    }
  }
}
</script>

分页处理

结合分页组件实现大数据量分页查询,减轻前端渲染压力。

<template>
  <div>
    <input v-model="searchQuery" @input="fetchItems" />
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
    <button @click="prevPage" :disabled="page === 1">上一页</button>
    <span>当前页: {{ page }}</span>
    <button @click="nextPage">下一页</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [],
      page: 1,
      pageSize: 10
    }
  },
  methods: {
    async fetchItems() {
      const response = await axios.get('/api/items', {
        params: {
          q: this.searchQuery,
          page: this.page,
          size: this.pageSize
        }
      });
      this.items = response.data;
    },
    nextPage() {
      this.page++;
      this.fetchItems();
    },
    prevPage() {
      if (this.page > 1) {
        this.page--;
        this.fetchItems();
      }
    }
  }
}
</script>

样式与交互优化

添加加载状态提示和空数据提示,提升用户体验。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索..." />
    <div v-if="isLoading">加载中...</div>
    <ul v-else>
      <li v-for="item in filteredList" :key="item.id">
        {{ item.name }}
      </li>
      <li v-if="filteredList.length === 0">暂无数据</li>
    </ul>
  </div>
</template>

vue实现列表查询功能

分享给朋友:

相关文章

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 无限滚动列表通常用于展示大量数据,通过动态加载数据减少初始渲染压力。以下是基于Vue的实现方法: 使用Intersection Observer API监听滚动 Inters…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象进行渲染。以下是几种常见的实现方式: 基础列表渲染 通过 v-for 指令遍历数组,动态生成列表项。…

jquery列表

jquery列表

jQuery 列表操作 jQuery 提供了多种方法来操作 HTML 列表(如 <ul> 或 <ol>),包括动态添加、删除、修改列表项,以及事件绑定等。 创建列表 使用 j…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表功能 在 Vue 中实现搜索列表功能通常需要以下几个关键步骤: 数据绑定与列表渲染 使用 v-model 绑定搜索输入框,监听用户输入。通过 v-for 指令渲染过滤后的列表数据…

vue实现悬浮列表

vue实现悬浮列表

Vue 实现悬浮列表的方法 使用 CSS 固定定位 通过 CSS 的 position: fixed 属性实现悬浮效果。在 Vue 模板中,为列表容器添加固定定位样式,并设置 top、left 等属…

vue实现列表权限

vue实现列表权限

实现列表权限控制的方法 在Vue中实现列表权限控制通常涉及前端逻辑与后端数据的配合。以下是几种常见方法: 基于角色或权限码的渲染控制 通过v-if或v-show指令根据用户权限动态渲染列表项:…