当前位置:首页 > uni-app

uniapp 列表数据

2026-02-06 06:58:35uni-app

列表数据渲染

在UniApp中渲染列表数据通常使用v-for指令,结合数组数据动态生成列表项。基础语法如下:

<template>
  <view>
    <view v-for="(item, index) in listData" :key="index">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      listData: [
        { id: 1, name: '项目A' },
        { id: 2, name: '项目B' }
      ]
    }
  }
}
</script>

复杂列表布局

对于需要复杂布局的列表,可结合CSS和组件实现。例如实现带图片和描述的卡片列表:

uniapp 列表数据

<view v-for="item in listData" :key="item.id" class="card">
  <image :src="item.image" mode="aspectFill"></image>
  <view class="content">
    <text class="title">{{ item.title }}</text>
    <text class="desc">{{ item.description }}</text>
  </view>
</view>

<style>
.card {
  display: flex;
  padding: 20rpx;
  border-bottom: 1rpx solid #eee;
}
.card image {
  width: 120rpx;
  height: 120rpx;
}
.content {
  margin-left: 20rpx;
}
.title {
  font-size: 32rpx;
  color: #333;
}
.desc {
  font-size: 24rpx;
  color: #999;
}
</style>

高性能长列表处理

当处理大量数据时,建议使用<scroll-view><list>组件实现懒加载:

<scroll-view 
  scroll-y 
  @scrolltolower="loadMore"
  style="height: 100vh">
  <view v-for="item in longList" :key="item.id">
    <!-- 列表项内容 -->
  </view>
  <view v-if="loading">加载中...</view>
</scroll-view>

<script>
export default {
  data() {
    return {
      longList: [],
      page: 1,
      loading: false
    }
  },
  methods: {
    loadMore() {
      if(this.loading) return;
      this.loading = true;
      // 模拟API请求
      setTimeout(() => {
        const newData = /* 获取新数据 */;
        this.longList = [...this.longList, ...newData];
        this.page++;
        this.loading = false;
      }, 500);
    }
  }
}
</script>

列表数据操作

实现常见的列表操作如删除、排序等:

uniapp 列表数据

// 删除项目
deleteItem(index) {
  this.listData.splice(index, 1);
}

// 排序
sortList() {
  this.listData.sort((a, b) => a.id - b.id);
}

// 过滤
filterList(keyword) {
  return this.listData.filter(item => 
    item.name.includes(keyword)
  );
}

跨平台注意事项

不同平台对列表渲染的优化策略不同:

  • H5平台可使用虚拟滚动插件
  • 小程序平台注意setData的性能优化
  • App平台可使用原生列表组件提升性能

状态管理集成

当列表数据需要全局管理时,可结合Vuex:

// store.js
export default new Vuex.Store({
  state: {
    globalList: []
  },
  mutations: {
    updateList(state, payload) {
      state.globalList = payload
    }
  }
})

// 组件中使用
computed: {
  listData() {
    return this.$store.state.globalList
  }
}

标签: 数据列表
分享给朋友:

相关文章

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <templ…

vue双向实现数据

vue双向实现数据

Vue 双向数据绑定的实现原理 Vue 的双向数据绑定主要通过 v-model 指令实现,其核心是结合了数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。以下是具…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表 在 Vue 中实现搜索列表功能,通常需要结合数据绑定、计算属性和事件监听。以下是一个完整的实现方案: 数据准备与模板结构 <template> <div&…

vue实现商品列表

vue实现商品列表

Vue实现商品列表的方法 使用Vue实现商品列表需要结合数据绑定、组件化和状态管理。以下是实现商品列表的几种常见方法: 基础数据绑定实现 在Vue组件中定义商品数据数组,使用v-for指令循环渲染商…

vue 实现长列表

vue 实现长列表

vue 实现长列表的优化方法 使用虚拟滚动技术,只渲染可视区域内的元素,大幅减少DOM节点数量。通过计算滚动位置动态更新显示内容,降低内存占用和渲染压力。 <template> &l…

react如何筛选数据

react如何筛选数据

筛选数据的方法 在React中筛选数据通常涉及对数组的操作,结合状态管理和渲染逻辑。以下是几种常见的实现方式: 使用数组的filter方法 通过JavaScript数组的filter方法筛选数据…