微信小程序自定义组件——手写radio

问题描述

微信小程序某些组件暴露的修改特性的接口不够,有些时候需要进行自定义

文档内容

相关的api文档在这里
看一下实例代码:

Component({
  properties: {
    min: {
      type: Number,
      value: 0
    },
    min: {
      type: Number,
      value: 0,
      observer: function(newVal, oldVal) {
        // 属性值变化时执行
      }
    },
    lastLeaf: {
      // 这个属性可以是 Number 、 String 、 Boolean 三种类型中的一种
      type: Number,
      optionalTypes: [String, Object],
      value: 0
    }
  }
})

手写实现一个radio

由于而本次需求中对radio的选中样式做了要求(包括选中样式,选中前样式等),原生的radio组件就无法满足此次的开发需求,看下自定义radio的实现:
新建component文件夹:
radio.wxml

<view class="bg" catchtap="checkRadio">
  <image wx:if="{{checked}}" class="checked" src="{{cdn}}selected@2x.png"></image>
</view>

radio.wxss

/* components/radio/radio.wxss */
.bg {
  width: 36rpx;
  height: 36rpx;
  border: 2rpx solid #343664;
  border-radius: 50%;
  display: inline-block;
  vertical-align: bottom;
}
.checked {
  width: 36rpx;
  height: 36rpx;
}

radio.js

// components/radio/radio.js
import { CDN_URL } from '../../config';
Component({

  properties: {
    checked: {
      type: Boolean,
      value: true,
      observer: function(newVal, oldVal) {
        oldVal = newVal
        this.setData({checked: oldVal})
      }
    },
  },

  /**
   * 页面的初始数据
   */
  data: {
    cdn: CDN_URL,
    checked: false
  },

  methods: {
    checkRadio: function() {
      var value = {}
      value.checked = !this.data.checked
      this.triggerEvent('check', value)
    },
  }
})

这样就完成了基础的radio组件,那么如何使用呢?

radio引入

在需要使用页面的json文件中进行如下配置:

{
  "usingComponents": {
    "radio": "/components/radio/radio",
  }
}

看下在wxml的使用:

 <radio checked="{{formData.sendnotice}}" bind:check="check5"/>

添加check5的定义:

  check5: function (e) {
    this.setData({
      'formData.sendnotice': e.detail.checked ? 1 : 0
    })
  },

这样就完成了一个基础的radio组件的定义和使用,我们也可以在properties中为radio添加更多的属性,以方便radio的初始化工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序是一种基于微信平台的应用程序,它可以在微信中直接运行,无需下载安装。而自定义组件是小程序中的一种重要功能,它允许开发者将一些常用的UI元素封装成组件,以便在不同的页面中复用。 自定义组件具有以下特点: 1. 组件是由wxml、wxss和js文件组成,可以独立定义样式和逻辑。 2. 组件可以接受外部传入的数据,通过属性进行配置。 3. 组件可以触发事件,向外部传递消息。 4. 组件可以包含子组件,形成组件的嵌套结构。 使用自定义组件的步骤如下: 1. 在小程序项目中创建一个新的文件夹,用于存放自定义组件的相关文件。 2. 在该文件夹中创建一个wxml文件,定义组件的结构。 3. 在同一文件夹中创建一个wxss文件,定义组件的样式。 4. 在同一文件夹中创建一个js文件,定义组件的逻辑。 5. 在需要使用该组件的页面中引入组件,并在wxml中使用组件标签。 例如,我们创建一个名为"custom-component"的自定义组件,其文件结构如下: ``` custom-component/ ├── custom-component.wxml ├── custom-component.wxss └── custom-component.js ``` 在custom-component.wxml中定义组件的结构,例如: ```html <view class="custom-component"> <text>{{text}}</text> <button bindtap="handleClick">点击按钮</button> </view> ``` 在custom-component.wxss中定义组件的样式,例如: ```css .custom-component { background-color: #f5f5f5; padding: 10px; } ``` 在custom-component.js中定义组件的逻辑,例如: ```javascript Component({ properties: { text: { type: String, value: '默认文本' } }, methods: { handleClick() { this.triggerEvent('click', { message: '按钮被点击了' }); } } }) ``` 在需要使用该组件的页面中引入组件,并在wxml中使用组件标签,例如: ```html <custom-component text="Hello World" bind:click="handleCustomComponentClick"></custom-component> ``` 以上就是微信小程序自定义组件的简单介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值