微信小程序 自定义组件

2021-11-18  本文已影响0人  _ou

开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。自定义组件在使用时与基础组件非常相似。

使用方法

一、

创建一个Component 页面
一个自定义组件由 json wxml wxss js 4个文件组成
在 wxml wxss 中进行组件的样式编写

二、

在自定义组件 js中 properties 进行自定义组件的属性编写

 properties: {
        // 属性名称
        label:{
        //类型
            type:String,
        //默认值
            value:''
        },
     
        count:{
            type:Number,
            value:0
        },
        max:{
            type:Number,
            value:999
        },
        min:{
            type:Number,
            value:0
        }

自定义组件 wxml 页面

//label 为数据绑定
<view class="label">{{label}}</view>
<view class="shop">
        <view class="label">{{label}}</view>
        <view class="btns">
            <view class="btn" bindtap="jian">-</view>
            <view class="count">{{count}}</view>
            <view class="btn" bindtap="jia">+</view>
        </view>
</view>

自定义组件js 页面

   // methods l里面主要写方法
    methods: {
      //减方法
        jian(){
            //count 值小于min值时 不在触发
            if(this.data.count<=this.data.min){
                return
            }
            this.data.count--
            //更新数据的同时重新渲染页面
            this.setData({
                count:this.data.count
            })
            //自定义方法 当jian()执行时 自定义方法 synccount 执行 向页面传回count值
            this.triggerEvent("synccount",this.data.count)
        },
        //加方法
        jia(){
            //count 值大于max值时 不在触发
            if(this.data.count>this.data.max){
                return
            }
            this.data.count++
           //更新数据的同时重新渲染页面
            this.setData({
                count:this.data.count
            })
            this.triggerEvent("synccount",this.data.count)
        },
    }

使用自定义组件需要在全局或者局部的json中导入

//名称 自己起的名字     文件路径
 "countent":"../../components/count/countent"

在需要使用的页面中使用自定义组件

//组件名称跟刚刚所引入的名称相同
把刚刚写属性添加进去        自定义的方法
 <countent  label="数字:" bind:synccount="synccount"></countent>

使用自定义组件js页面

    //自定义方法  e 为默认传参
    synccount(e){
        //结构出 detail 中的参数 即为 自定义方法传回的参数
        let {detail}=e
      //更新数据的同时 重新渲染页面
        this.setData({
            count:detail
        })
    },

自定义插件效果图


QQ图片20211118195000.png
上一篇下一篇

猜你喜欢

热点阅读