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

目录
相关文章
|
9月前
|
前端开发
前端学习笔记202305学习笔记第二十三天-重构报错解决
前端学习笔记202305学习笔记第二十三天-重构报错解决
37 0
|
5天前
|
算法
连连看游戏系列教程开篇
连连看游戏系列教程开篇
23 0
|
7月前
|
存储 区块链
无聊猿大逃杀游戏卷轴模式系统开发逻辑步骤
区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现
|
12月前
|
XML Java API
49张图带领小伙伴们体验一把 Flowable-UI
49张图带领小伙伴们体验一把 Flowable-UI
|
Python
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏04之跳跃
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏04之跳跃
110 0
微信小游戏开发系列教程1-做个小游戏并不难,你也可以的
这是小蚂蚁的人人都能做游戏的系列教程的开篇,做个小游戏没有那么难,你也可以的。 我做了一个精致而温暖的小游戏,欢迎点击试玩。
107 0
|
JavaScript 前端开发 程序员
程序员的未来职场选择;点击按钮发送验证码怎么显得水平高;自学 VUE ,可以直接做项目吗|极客观点
程序员的未来职场选择;点击按钮发送验证码怎么显得水平高;自学 VUE ,可以直接做项目吗|极客观点
|
前端开发 JavaScript 索引
2022年了!再来手撕一下前端瀑布流代码吧!
**前言: **知识是学不完的,可是我们为什么还是要不停的去学习呢。原因很简单,因为我们要产生更多的知识,让更多的人学不完!前端技术也是在不停的革新,我们要做那个让别人有学不完的知识的人
834 0
2022年了!再来手撕一下前端瀑布流代码吧!
|
安全 程序员 开发者
技术人总有想写文章的冲动却无疾而终?4个小Tips帮你快速上手!
技术人想写文章?还未下笔?来来来~助你打通任督二脉!
144 0
技术人总有想写文章的冲动却无疾而终?4个小Tips帮你快速上手!
|
Web App开发 缓存 移动开发
Vue 2.x脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)
文章内容覆盖范围,芝麻绿豆的破问题都有,不止于vue; 给出的是方案,而非手把手一字一句的给你说十万个为什么!
292 0