【经验分享】 自定义picker组件,拿走即用。

简介: 【经验分享】 自定义picker组件,拿走即用。

支付宝小程序的UI样式向原生靠齐,picker组件不满足设计小姐姐的要求,然后卑微的切图仔出来搞了个自定义的picker组件样式。

老规矩效果图:


实现方案:

组件抛出四个属性:

属性

默认值

描述

pickerIndex

[]

默认选中下标,即弹起时默认选中第几项

show

false

是否显示picker弹窗

list

[]

picker可选项列表

title

picker标题

组件JS, 接收父组件传递的值,以及抛出点击取消回调

Component({
  data: {},
  props: {
    pickerIndex: [], // 默认选中下标
    show: false, // 是否显示
    list: [], // 列表
    title: '' // 标题
  },
  methods: {
    // 取消按钮点击
    handlePickerCancle() {
      this.props.onCancle()
    },
    // 确定按钮点击
    handlePickerConfirm() {
      this.props.onConfirm({ key: this.data.pickerKey, value: this.data.pickerValue })
    },
    // picker切换
    handlePickerChange(e) {
      this.setData({
        pickerKey: e.detail.value[0],
        pickerValue: this.props.list[e.detail.value]
      })
    }
  }
})

页面引用方式:需注意默认选中第几项是个数组。

<qts-picker title="{{title}}" show="{{show}}" list="{{list}}" pickerIndex="{{index}}" onCancle="handleClick" onConfirm="handleConfirm" />
Page({
  data: {
    show: false, // 是否显示picker
    title: '薪资单位', // picker标题
    index: [2], // 默认选中第几项
    list: ['日','周','月','季','年'],
    key: '',
    value: ''
  },
  handleClick() {
    this.setData({
      show: !this.data.show
    })
  },
  handleConfirm(e) {
    console.log(e)
    this.setData({
      key: e.key,
      value: e.value
    })
    this.handleClick()
  }
})

完整代码片段如下:

https://pen.mini-code.com/s/dce92ada-f3c6-429a-8139-14ee583020bf

目录
相关文章
|
1月前
扩展鸿蒙ArkUI日期组件
扩展鸿蒙ArkUI日期组件
32 1
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的走失人员的报备平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的走失人员的报备平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的课程案例库平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课程案例库平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课程案例库平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的车库智能管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的车库智能管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的车库智能管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的游戏资源管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的游戏资源管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的云端学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的云端学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的公务用车管理智慧云服务监管平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的公务用车管理智慧云服务监管平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线教育平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线教育平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的老年一站式服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的老年一站式服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
移动开发 小程序 前端开发
【5月开发者日回顾】自定义TabBar、自定义组件支持 observers两大功能即将上线
【5月开发者日回顾】自定义TabBar、自定义组件支持 observers两大功能即将上线
48 11