当前位置:首页 > VUE

vue实现列表页面

2026-01-17 12:30:00VUE

Vue 列表页面实现方案

基础列表渲染

使用 v-for 指令渲染数组数据,配合 :key 提升性能:

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

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '商品A', price: 100 },
        { id: 2, name: '商品B', price: 200 }
      ]
    }
  }
}
</script>

分页功能实现

通过计算属性实现分页逻辑:

<template>
  <div>
    <table>
      <tr v-for="item in paginatedItems" :key="item.id">
        <td>{{ item.name }}</td>
      </tr>
    </table>
    <button @click="currentPage--" :disabled="currentPage === 1">上一页</button>
    <span>{{ currentPage }}/{{ totalPages }}</span>
    <button @click="currentPage++" :disabled="currentPage >= totalPages">下一页</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [...], // 完整数据
      currentPage: 1,
      pageSize: 10
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.items.length / this.pageSize)
    },
    paginatedItems() {
      const start = (this.currentPage - 1) * this.pageSize
      return this.items.slice(start, start + this.pageSize)
    }
  }
}
</script>

搜索过滤功能

结合计算属性实现实时搜索:

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

<script>
export default {
  data() {
    return {
      searchQuery: '',
      allItems: [...]
    }
  },
  computed: {
    filteredItems() {
      return this.allItems.filter(item => 
        item.title.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

排序功能

通过方法实现多列排序:

<template>
  <table>
    <thead>
      <tr>
        <th @click="sortBy('name')">名称</th>
        <th @click="sortBy('price')">价格</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in sortedItems" :key="item.id">
        <td>{{ item.name }}</td>
        <td>{{ item.price }}</td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default {
  data() {
    return {
      items: [...],
      sortKey: '',
      sortOrder: 1 // 1升序,-1降序
    }
  },
  computed: {
    sortedItems() {
      return [...this.items].sort((a, b) => {
        return a[this.sortKey] > b[this.sortKey] ? this.sortOrder : -this.sortOrder
      })
    }
  },
  methods: {
    sortBy(key) {
      this.sortOrder = this.sortKey === key ? -this.sortOrder : 1
      this.sortKey = key
    }
  }
}
</script>

异步数据加载

使用 axios 获取远程数据:

<script>
import axios from 'axios'

export default {
  data() {
    return {
      items: [],
      loading: false,
      error: null
    }
  },
  async created() {
    try {
      this.loading = true
      const response = await axios.get('/api/items')
      this.items = response.data
    } catch (err) {
      this.error = err.message
    } finally {
      this.loading = false
    }
  }
}
</script>

性能优化建议

  1. 虚拟滚动:对于超长列表使用 vue-virtual-scroller 等库
  2. 分页加载:结合后端 API 实现真分页而非前端分页
  3. 防抖处理:对搜索输入框添加防抖函数
  4. 组件拆分:将列表项拆分为独立组件提高复用性

以上方案可根据实际需求组合使用,构建完整的列表功能。

vue实现列表页面

标签: 页面列表
分享给朋友:

相关文章

php实现页面跳转

php实现页面跳转

PHP 页面跳转方法 在 PHP 中,可以通过多种方式实现页面跳转,以下是几种常见的方法: 使用 header() 函数 header() 函数是 PHP 中最常用的跳转方法,通过发送 HTTP…

h5页面实现vr

h5页面实现vr

实现H5页面VR效果的方法 在H5页面中实现VR(虚拟现实)效果,可以通过以下几种技术方案实现: 使用WebVR API WebVR是一个实验性的JavaScript API,提供了访问VR设备的功…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

h5页面实现录音

h5页面实现录音

实现H5页面录音的方法 使用Web Audio API Web Audio API提供音频处理能力,结合getUserMedia可实现录音。核心步骤包括请求麦克风权限、创建音频上下文和处理音频流。…

vue实现页面切换

vue实现页面切换

Vue 实现页面切换的方法 Vue 中实现页面切换通常使用 Vue Router,这是 Vue.js 官方的路由管理器。以下是几种常见的实现方式: 使用 Vue Router 的基本配置 安装 Vu…

vue实现页面签字

vue实现页面签字

实现页面签名的Vue方案 在Vue中实现页面签名功能,可以通过HTML5的Canvas元素结合手势或鼠标事件来捕获用户绘制轨迹。以下是具体实现方法: 安装签名库(可选) 使用现成的Vue签名库如…