微信小程序:轻松实现时间轴组件

简介: 本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。

效果图

https://raw.githubusercontent.com/chnjames/cloudImg/main/Images202408191517565.png

引言

老板: “我们公司是做基金的,用户都在买买买,可他们的钱去了哪里?没有时间轴,用户会不会觉得自己的钱瞬移了?”

你: “哈哈,确实!时间轴就像用户的投资地图,不然他们可能觉得钱被外星人劫走了。”

老板: “没错!我们得在时间轴上标清‘资金到账’、‘收益结算’这些节点,这样用户就不会担心他们的钱去买彩票了。”

你: “放心吧,老板,我马上设计一个时间轴,让用户一看就明白他们的钱在干什么,还能时不时地笑一笑!”

老板: “好,赶紧行动,不然用户要开始给我们寄失踪报告了!”

废话不多说,我们直接开始吧!!!

组件定义

以下代码为时间轴组件的实现,详细注释在代码中。如果有任何疑问,欢迎在评论区留言讨论,或者联系我获取完整案例。

组件的 .js 文件:

/*可视化地呈现时间流信息*/
Component({
   
  options: {
   
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
  },
  properties: {
   
    activities: {
    // 时间轴列表
      type: Array,
      value: []
    },
    shape: {
    // 时间轴形状
      type: String,
      value: 'circle' // circle | square
    },
    ordinal: {
    // 是否显示序号
      type: Boolean,
      value: true
    },
    reverse: {
    // 是否倒序排列
      type: Boolean,
      value: false
    }
  },
  lifetimes: {
   
    attached() {
   
      // 是否倒序排列操作数据
      const {
   reverse, activities} = this.data
      if (!reverse) return
      this.setData({
   
        activities: activities.reverse()
      })
    }
  }
})

组件的.wxml文件:

<view class="container">
  <view class="item" wx:for="{
    {activities}}" wx:key="item">
    <view class="item-tail"></view>
    <view class="item-node {
    {shape}} {
    {item.status}}">
      <block wx:if="{
    {ordinal}}">{
  {index + 1}}</block>
    </view>
    <view class="item-wrapper">
      <view class="item-news">
        <view class="item-timestamp">{
  {item.date}}</view>
        <view class="item-mark">收益结算</view>
      </view>
      <view class="item-content">
        <view>{
  {item.content}}</view>
        <!--动态slot的实现方式-->
        <slot name="operate{
    {index}}"></slot>
      </view>
    </view>
  </view>
</view>

组件使用

要使用该组件,首先需要在 app.jsonindex.json 中引用组件:

"usingComponents": {
   
    "eod-timeline": "/components/Timeline/Timeline"
}

然后你可以通过以下方式进行基本使用:

<eod-timeline activities="{
    {dataList}}" ordinal="{
    {true}}"></eod-timeline>

如果需要结合插槽动态显示操作记录,可以这样实现:

<eod-timeline activities="{
    {dataList}}" ordinal="{
    {true}}">
    <!--动态slot的实现方式-->
    <view wx:for="{
    {dataList}}" wx:for-index="idx" wx:key="idx" slot="operate{
    {idx}}">
      <view class="row-operate">
        <view>操作记录</view>
        <view>收益记录</view>
        <view>动账记录</view>
      </view>
    </view>
</eod-timeline>

数据结构与属性说明

dataList 数据结构示例如下:

dataList:[
  {
   date: '2023-05-26 12:04:14', status: 'info', content: '内容一'},
  {
   date: '2023-05-25 12:04:14', status: 'success', content: '内容二'},
  {
   date: '2023-05-24 12:04:14', status: 'success', content: '内容三'},
  {
   date: '2023-05-23 12:04:14', status: 'error', content: '内容四'},
  {
   date: '2023-05-22 12:04:14', status: 'warning', content: '内容五'}
]

组件的属性配置如下表所示:

参数 说明 可选值 类型 默认值
activities 显示的数据 array
shape 时间轴点形状 circle / square string circle
ordinal 是否显示序号 boolean true
reverse 是否倒序排列 boolean false

总结

这个时间轴组件提供了一个简单易用的方式来展示事件的时间顺序。组件支持定制形状、序号显示以及正序或倒序排列,同时允许通过插槽自定义内容,增强了组件的灵活性。代码中有详细注释,方便理解和修改。如果需要更详细的案例或有任何疑问,请在评论区留言。希望这篇文章对你有所帮助!

拓展阅读

关于动态 Slot 实现:

由于动态 slot 目前仅可用于 glass-easel 组件框架,而该框架仅可用于 Skyline 渲染引擎,因此这些特性也同样受此限制。如果需要在非 glass-easel 组件框架中实现动态 slot,请参考上文标记了 <!--动态slot的实现方式--> 的代码段。

如需了解更多关于 glass-easel 组件框架的信息,请参阅微信小程序官方开发指南

目录
相关文章
|
1天前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
7 0
微信小程序:自定义关注公众号组件样式
|
4天前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
18 1
|
4天前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
32 1
|
10天前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
19 1
|
25天前
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
|
10天前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
24 0
|
2月前
|
人工智能 小程序 编译器
Ant Design Mini 问题之Antd Mini 使用小程序函数式组件(functional-mini)来确保组件逻辑适配到双端,如何实现
Ant Design Mini 问题之Antd Mini 使用小程序函数式组件(functional-mini)来确保组件逻辑适配到双端,如何实现
|
14天前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
61 7
ly~
|
25天前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
65 6
|
9天前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
33 5