【经验分享】如何手撸一个switch组件。

简介: 【经验分享】如何手撸一个switch组件。

众所周知,支付宝小程序的 switch安卓与IOS都是不同的样式,安卓为长方形的,而ios是带圆角的

为了应付设计小姐姐,当然也是为了解决这一问题,我们又得出来自己造。

组件布局:

<import-sjs name="parse" from="./parse.sjs" />
<view class="qts-class qts-switch {{parse.setSize(size)}} {{parse.setCurrent(value)}}" onTap="toggle">
  <input type="text" name="name" value="{{value}}" class="qts-switch-hide-input"></input>
  <view class="qts-switch-inner" a:if="{{value}}">
    <slot name="open"></slot>
  </view>
  <view class="qts-switch-inner" a:else>
    <slot name="close"></slot>
  </view>
</view>

至于SJS就不赘述,文档可以查到。

parse.sjs
var sizes = ["large", "small", "default"];
var prefixCls = "qts-switch";
var setSize = function (size) {
  var index = sizes.indexOf(size);
  return prefixCls + (index > -1 ? ('-' + size) : 'default')
}
var setCurrent = function (value) {
  var className = value ? prefixCls + "-checked" : "";
  return className;
};
export default {
  setSize,
  setCurrent
};


开放两个属性,一个当前的value,一个size样式大小。

Component({
  props: {
    value: false,
    size: 'default' // large、small、default
  },
  didMount() {
    this.setData({
      value: this.props.value
    })
  },
  didUpdate() {
    this.setData({
      value: this.props.value
    })
  },
  data: {
    value: false
  },
  methods: {
    toggle() {
      const value = this.data.value ? false : true;
      this.props.onChange({ value });
    }
  }
})


最后附上代码片段:

https://pen.mini-code.com/s/eb149907-0bb6-4e86-8707-357abdf594d2

目录
相关文章
|
1月前
|
Android开发 开发者 Python
手撸了一个全自动微信清粉小工具(源码详解)
微信清理僵尸粉工具利用Python和`uiautomator2`库,通过模拟转账操作自动检测并标记微信好友列表中被删除、被拉黑或账号存在问题的“僵尸粉”。工具支持开启调试模式、自动打开微信、获取好友信息、判断好友状态、管理标签等功能,最终将检测结果记录到文件中,便于用户管理和清理好友列表。此工具适用于Android设备,已在OPPO Reno4 Pro上测试成功。
87 5
|
5月前
|
设计模式 JavaScript 前端开发
小白请看 JS大项目宝典:设计模式 教你如何追到心仪的女神
小白请看 JS大项目宝典:设计模式 教你如何追到心仪的女神
|
7月前
|
安全
心得经验总结:手缝针法大全
心得经验总结:手缝针法大全
50 0
|
8月前
|
JavaScript 中间件 前端开发
[评论送书 ]手撕源码,实现一个Koa。,2024年最新学生会面试答题技巧
[评论送书 ]手撕源码,实现一个Koa。,2024年最新学生会面试答题技巧
送给即将学习UI的新手——了解这些,少走弯路
送给即将学习UI的新手——了解这些,少走弯路
77 0
|
XML Java API
49张图带领小伙伴们体验一把 Flowable-UI
49张图带领小伙伴们体验一把 Flowable-UI
|
JavaScript 前端开发 程序员
程序员的未来职场选择;点击按钮发送验证码怎么显得水平高;自学 VUE ,可以直接做项目吗|极客观点
程序员的未来职场选择;点击按钮发送验证码怎么显得水平高;自学 VUE ,可以直接做项目吗|极客观点
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第八十四题-计时器
#yyds干货盘点# 前端歌谣的刷题之路-第八十四题-计时器
91 0
#yyds干货盘点# 前端歌谣的刷题之路-第八十四题-计时器
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第七十八题-单向绑定
#yyds干货盘点# 前端歌谣的刷题之路-第七十八题-单向绑定
109 0
#yyds干货盘点# 前端歌谣的刷题之路-第七十八题-单向绑定
|
前端开发 JavaScript
#yyds干货盘点# 前端歌谣的刷题之路-第二十三题-检测复杂数据类型
#yyds干货盘点# 前端歌谣的刷题之路-第二十三题-检测复杂数据类型
100 0
#yyds干货盘点# 前端歌谣的刷题之路-第二十三题-检测复杂数据类型