前端列表重复项更好的写法(一堆长得一样,内容不同的数据项)

前端列表重复项更好的写法(一堆长得一样,内容不同的数据项)

写前端我们常常会遇到写卡片列表需求

  • 像下图,有一堆长得一模一样的卡片,你会怎么写?
  • (当然用组件化开发的方式把它写成组件也是不错的)

在这里插入图片描述

后文用的是微信小程序的语法,但这不是重点,你也可以基于这种方式用 vue 的语法来写

无脑写法

如果我们写完一个直接复制几遍,乍一看没啥问题,但却是很不利于维护的

而且常规情况下静态 demo 后续肯定是要改成数据动态渲染的

  • 后续调整结构的时候需要一个个改(比如删减展示字段、调整卡片内容)
  • 调整页面其他内容时,代码过长,定位目标代码有点麻烦
  • 后续对接接口数据的时候,需要把写了半天的这些 demo 全部删除,只留一个
<view class="card">
    <view class="card-title">婺城区2021年土地出让手册</view>
    <image class="card-cover-image" src="../../images/cover-image.png" mode="widthFix"></image>
    <view class="card-descript">本期手册共收录15宗地块,共计9999亩。</view>
    <view class="card-date">更新时间:2021年6月16日</view>
</view>

<view class="card">
    <view class="card-title">婺城区2021年土地出让手册</view>
    <image class="card-cover-image" src="../../images/cover-image.png" mode="widthFix"></image>
    <view class="card-descript">本期手册共收录15宗地块,共计9999亩。</view>
    <view class="card-date">更新时间:2021年6月16日</view>
</view>

<view class="card">
    <view class="card-title">婺城区2021年土地出让手册</view>
    <image class="card-cover-image" src="../../images/cover-image.png" mode="widthFix"></image>
    <view class="card-descript">本期手册共收录15宗地块,共计9999亩。</view>
    <view class="card-date">更新时间:2021年6月16日</view>
</view>

<view class="card">
    <view class="card-title">婺城区2021年土地出让手册</view>
    <image class="card-cover-image" src="../../images/cover-image.png" mode="widthFix"></image>
    <view class="card-descript">本期手册共收录15宗地块,共计9999亩。</view>
    <view class="card-date">更新时间:2021年6月16日</view>
</view>

<!-- ... -->

取巧一点的写法

我们可以直接用循环的方式去遍历几个 demo 出来,先把结构样式定下来,改一个全部生效,能达到同样的占位效果

<view class="card" wx:for="{{[1,2,3,4]}}" wx:key="item">
    <view class="card-title">婺城区2021年土地出让手册</view>
    <image class="card-cover-image" src="../../images/cover-image.png" mode="widthFix"></image>
    <view class="card-descript">本期手册共收录15宗地块,共计9999亩。</view>
    <view class="card-date">更新时间:2021年6月16日</view>
</view>

进阶写法

让每个卡片 demo 内容不同

  • 建议先按上述写法调整完结构、写好样式
  • 再把这个循环遍历的对象改成一个变量,简单设计下数据结构,把需要动态渲染的内容渲染成变量

xxx.js

/* ... */
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    cardData: [
      {title: '婺城区2021年土地出让手册', img: 'http://www.xxx.com/static/images/cover-image.png', descript: '本期手册共收录15宗地块,共计9999亩。', date: '2021年6月16日'},
      {title: '婺城区2020年土地出让手册', img: 'http://www.xxx.com/static/images/cover-image2.png', descript: '本期手册共收录10宗地块,共计6688亩。', date: '2020年6月12日'},
    ]
  }
})

xxx.wxml

<view class="card" wx:for="{{cardData}}" wx:key="item">
    <view class="card-title">{{item.title}}</view>
    <image class="card-cover-image" src="{{item.img}}" mode="widthFix"></image>
    <view class="card-descript">{{item.descript}}</view>
    <view class="card-date">更新时间:{{item.date}}</view>
</view>

后续调整结构依然简单,只需要调整这个“模板”卡片和对应的数据结构即可

  • 而复制的做法则需要一个个改结构、或者删掉多余的复刻版,改好模板再复制一遍,再写个性化数据

如果你觉得写的不错或者帮到你了,记得给我点个赞哟~

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RealizeInnerSelf丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值