当前位置:首页 > 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和组件实现。例如实现带图片和描述的卡片列表:

<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>

列表数据操作

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

// 删除项目
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:

uniapp 列表数据

// 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 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

vue实现无线滚动列表

vue实现无线滚动列表

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

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

vue实现列表页

vue实现列表页

Vue 实现列表页的方法 数据绑定与渲染 使用 v-for 指令动态渲染列表数据,结合 :key 确保渲染性能。示例代码: <template> <ul> <…

vue实现数据添加

vue实现数据添加

在 Vue 中实现数据添加 Vue 提供了多种方式来实现数据的添加操作,可以通过组件的数据绑定、表单处理以及状态管理等方式完成。以下是几种常见的实现方法: 使用 v-model 绑定表单数据 通过…

vue实现列表选择

vue实现列表选择

Vue 实现列表选择的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以轻松实现多选功能。适用于复选框场景。 <template> <div>…