当前位置:首页 > VUE

vue列表查询实现

2026-01-08 04:40:52VUE

实现 Vue 列表查询功能

基础列表渲染 在 Vue 中可以通过 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>

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

使用 watch 实现异步查询 当需要从 API 获取数据时,可以使用 watch 监听查询条件变化:

export default {
  data() {
    return {
      searchQuery: '',
      loading: false,
      resultList: []
    }
  },
  watch: {
    searchQuery(newVal) {
      this.debouncedSearch(newVal)
    }
  },
  created() {
    this.debouncedSearch = _.debounce(this.fetchData, 500)
  },
  methods: {
    async fetchData(query) {
      this.loading = true
      try {
        const res = await axios.get('/api/items', { params: { q: query } })
        this.resultList = res.data
      } finally {
        this.loading = false
      }
    }
  }
}

分页查询实现 结合分页组件实现完整查询功能:

export default {
  data() {
    return {
      queryParams: {
        keyword: '',
        page: 1,
        pageSize: 10
      },
      total: 0,
      dataList: []
    }
  },
  methods: {
    async loadData() {
      const res = await api.getItems(this.queryParams)
      this.dataList = res.data.list
      this.total = res.data.total
    },
    handleSearch() {
      this.queryParams.page = 1
      this.loadData()
    }
  },
  mounted() {
    this.loadData()
  }
}

高级过滤功能 实现多条件复合查询:

computed: {
  filteredItems() {
    return this.items.filter(item => {
      return (
        (!this.filters.category || item.category === this.filters.category) &&
        (!this.filters.priceMin || item.price >= this.filters.priceMin) &&
        (!this.filters.priceMax || item.price <= this.filters.priceMax)
      )
    })
  }
}

性能优化建议

vue列表查询实现

  • 对频繁触发的搜索使用防抖(debounce)
  • 大数据量时采用虚拟滚动(vue-virtual-scroller)
  • 复杂查询条件可考虑使用 Web Worker
  • 服务端查询时确保有数据库索引支持

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

相关文章

vue实现安全免登录

vue实现安全免登录

Vue 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Token…

vue 实现报价

vue 实现报价

Vue 实现报价功能 在 Vue 中实现报价功能通常涉及前端表单交互、数据计算和与后端 API 的通信。以下是实现报价功能的几种常见方法: 表单设计与数据绑定 使用 Vue 的 v-model 指…

vue实现左右菜单

vue实现左右菜单

实现左右菜单的基本思路 使用Vue实现左右菜单通常需要两个主要组件:左侧的导航菜单和右侧的内容区域。左侧菜单用于导航,右侧区域根据菜单选择动态展示内容。 创建左侧菜单组件 左侧菜单通常是一个列表,可…

vue怎么实现日历

vue怎么实现日历

实现日历组件的基本方法 使用Vue实现日历组件可以通过以下步骤完成。这里提供一个基础的实现思路,结合Vue 3的Composition API和模板语法。 安装依赖(如需要) npm instal…

vue 怎么实现tab

vue 怎么实现tab

实现 Tab 的基本方法 在 Vue 中实现 Tab 功能可以通过动态组件或条件渲染完成。以下是一个使用 v-if 和 v-for 的常见方案: <template> <div…

vue实现dialog窗口

vue实现dialog窗口

Vue 实现 Dialog 窗口的方法 使用组件化方式实现 Dialog 在 Vue 中可以通过组件化方式实现 Dialog 窗口。创建一个可复用的 Dialog 组件,利用 v-model 控制显示…