当前位置:首页 > 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>

脚本部分

uniapp 内容列表

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

分页加载的实现

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

uniapp 内容列表

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库快速创建列表:

<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实现导航切换内容的方法 在Vue中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容…

vue公共列表的实现

vue公共列表的实现

Vue 公共列表的实现方法 在 Vue 中实现公共列表组件,可以通过封装可复用的逻辑和模板来完成。以下是几种常见的实现方式: 使用 props 和 slots 通过 props 接收列表数据,使用…

h5实现展开列表

h5实现展开列表

使用HTML5和CSS实现展开列表 在HTML5中,可以通过结合CSS和JavaScript实现展开列表效果。以下是几种常见的方法: 方法1:使用details和summary标签 HTML5提供…

vue实现列表

vue实现列表

实现列表的基本方法 在Vue中实现列表通常使用v-for指令,这是Vue的核心功能之一。v-for可以遍历数组或对象,为每个元素生成对应的DOM节点。 <template> <…

h5 实现列表

h5 实现列表

列表实现方法 在HTML5中,可以通过多种方式实现列表,包括无序列表、有序列表和自定义列表。以下是具体的实现方法。 无序列表 无序列表使用<ul>标签,列表项使用<li>标签…

vue列表查询实现

vue列表查询实现

实现Vue列表查询功能 基本数据绑定与渲染 在Vue中实现列表查询,首先需要定义数据源和查询条件。通过v-model绑定搜索输入框,使用计算属性过滤列表。 <template> &l…