当前位置:首页 > 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>

样式与交互优化

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

vue实现列表查询功能

<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 中实现功能列表通常涉及数据绑定、列表渲染、事件处理和状态管理。以下是几种常见的方法: 数据驱动列表渲染 使用 v-for 指令可以轻松实现列表渲染。假设有一个…

vue实现文本列表

vue实现文本列表

Vue 实现文本列表的方法 Vue 可以通过多种方式实现文本列表的渲染和管理,以下是几种常见的方法: 使用 v-for 指令渲染列表 通过 v-for 指令可以动态渲染数组或对象中的文本列表。 &…

php实现网站查询功能实现的

php实现网站查询功能实现的

PHP实现网站查询功能的方法 数据库连接与配置 使用PDO或mysqli扩展连接数据库,确保安全性。示例代码: $host = 'localhost'; $dbname = 'database_na…

vue实现竖向列表

vue实现竖向列表

Vue 实现竖向列表的方法 使用 v-for 指令 通过 Vue 的 v-for 指令可以轻松渲染一个竖向列表。假设有一个数组 items,可以通过以下方式渲染: <template>…

vue实现模拟列表

vue实现模拟列表

使用 Vue 实现模拟列表 在 Vue 中实现模拟列表可以通过多种方式完成,常见的方法包括使用 v-for 指令动态渲染数据、结合计算属性或方法进行列表操作。以下是一个完整的实现方案: 基础列表渲染…

vue 实现列表全选

vue 实现列表全选

实现列表全选功能 在Vue中实现列表全选功能,可以通过绑定数据和事件处理来实现。以下是一个完整的示例代码: <template> <div> <input…