【经验分享】如何手撸一个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

目录
相关文章
|
7月前
|
安全
心得经验总结:手缝针法大全
心得经验总结:手缝针法大全
52 0
|
机器学习/深度学习 人工智能 算法
【如何入门编程】编程升级通关绝招
【如何入门编程】编程升级通关绝招
64 0
|
前端开发 自动驾驶 算法
这个知识点99%的前端都没有听过,不信你进来看?
这个知识点99%的前端都没有听过,不信你进来看?
110 0
送给即将学习UI的新手——了解这些,少走弯路
送给即将学习UI的新手——了解这些,少走弯路
81 0
|
XML Java API
49张图带领小伙伴们体验一把 Flowable-UI
49张图带领小伙伴们体验一把 Flowable-UI
|
C++
【C/C++】手把手教你如何实现简易版三子棋(下)
【C/C++】手把手教你如何实现简易版三子棋(下)
95 0
|
人工智能 程序员 C语言
【C/C++】手把手教你如何实现简易版三子棋(上)
【C/C++】手把手教你如何实现简易版三子棋
188 0
|
前端开发 JavaScript
#yyds干货盘点# 前端歌谣的刷题之路-第一百零五题-监听对象
#yyds干货盘点# 前端歌谣的刷题之路-第一百零五题-监听对象
113 0
#yyds干货盘点# 前端歌谣的刷题之路-第一百零五题-监听对象
|
前端开发 JavaScript 索引
2022年了!再来手撕一下前端瀑布流代码吧!
**前言: **知识是学不完的,可是我们为什么还是要不停的去学习呢。原因很简单,因为我们要产生更多的知识,让更多的人学不完!前端技术也是在不停的革新,我们要做那个让别人有学不完的知识的人
1048 0
2022年了!再来手撕一下前端瀑布流代码吧!
|
JavaScript 前端开发 索引

热门文章

最新文章