当前位置:首页 > uni-app

uniapp 内容列表

2026-01-15 18:17:39uni-app

uniapp 内容列表的实现方法

在uniapp中实现内容列表通常需要结合组件和数据绑定。以下是一个常见的方法:

模板部分

<template>
  <view class="content">
    <scroll-view scroll-y="true" class="list">
      <view v-for="(item, index) in listData" :key="index" class="list-item">
        <text>{{ item.title }}</text>
        <image :src="item.image" mode="aspectFill"></image>
      </view>
    </scroll-view>
  </view>
</template>

脚本部分

<script>
export default {
  data() {
    return {
      listData: [
        { title: '项目1', image: '/static/image1.jpg' },
        { title: '项目2', image: '/static/image2.jpg' }
      ]
    }
  }
}
</script>

样式部分

<style>
.content {
  padding: 20rpx;
}
.list {
  height: 100vh;
}
.list-item {
  margin-bottom: 20rpx;
  padding: 20rpx;
  background-color: #fff;
  border-radius: 10rpx;
}
</style>

分页加载的实现

对于长列表,实现分页加载可以提升性能:

data() {
  return {
    listData: [],
    page: 1,
    loading: false,
    noMore: false
  }
},
methods: {
  loadData() {
    if (this.loading || this.noMore) return

    this.loading = true
    uni.request({
      url: 'your_api_url',
      data: { page: this.page },
      success: (res) => {
        if (res.data.length) {
          this.listData = [...this.listData, ...res.data]
          this.page++
        } else {
          this.noMore = true
        }
      },
      complete: () => {
        this.loading = false
      }
    })
  }
},
onReachBottom() {
  this.loadData()
},
onLoad() {
  this.loadData()
}

性能优化技巧

使用<recycle-list>组件处理超长列表:

<recycle-list 
  :list="listData"
  :template-key="'templateKey'"
  :alias="'item'">
  <template v-slot:default="props">
    <view>{{ props.item.title }}</view>
  </template>
</recycle-list>

添加下拉刷新功能:

onPullDownRefresh() {
  this.page = 1
  this.noMore = false
  this.listData = []
  this.loadData()
  uni.stopPullDownRefresh()
}

常见UI库实现

使用uView UI库快速创建列表:

uniapp 内容列表

<template>
  <u-list>
    <u-list-item 
      v-for="(item, index) in listData"
      :key="index"
      :title="item.title"
      :thumb="item.image">
    </u-list-item>
  </u-list>
</template>

注意事项

  • 列表项必须设置唯一的:key属性
  • 长列表应考虑使用虚拟滚动技术
  • 图片加载应使用懒加载模式
  • 分页加载时需处理边界条件
  • 移动端需考虑下拉刷新和上拉加载的交互体验

标签: 内容列表
分享给朋友:

相关文章

vue实现列表组件

vue实现列表组件

Vue 列表组件实现方法 基础列表渲染 使用 v-for 指令渲染数组数据,需配合 :key 提升性能: <template> <ul> <li v-for…

vue实现列表多选

vue实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以轻松实现多选功能。当复选框被选中或取消选中时,数组会自动更新。 <template>…

vue实现伸缩列表

vue实现伸缩列表

Vue 实现伸缩列表的方法 使用 Vue 实现伸缩列表可以通过动态绑定样式或类名,结合过渡效果实现平滑的展开和收起动画。以下是几种常见实现方式: 动态绑定高度 通过 v-if 或 v-show 控制…

vue如何实现列表

vue如何实现列表

使用 v-for 指令渲染列表 在 Vue 中,可以通过 v-for 指令动态渲染列表数据。v-for 需要特殊的语法形式 item in items,其中 items 是源数据数组,item 是数组…

vue实现多级列表

vue实现多级列表

实现多级列表的两种常见方法 递归组件法 通过组件递归调用自身实现嵌套渲染,适合动态层级数据。 定义组件时通过name属性使其可递归调用。 模板中使用v-for遍历数据,嵌套部分通过条件渲染递…

vue实现题目列表

vue实现题目列表

Vue实现题目列表的方法 数据准备 在Vue中实现题目列表需要先准备题目数据。通常将题目数据存储在组件的data或通过API从后端获取。示例数据结构如下: data() { return {…