微信小程序组件封装-如何进行属性判断

最近开发小程序,对小程序组件封装进行了一定的了解,现在分享下。
个人理解:底层组件封装最好原子化,不带业务逻辑,业务组件后期可以根据底层组件在进行封装开发。尽量做到一次开发,多处使用的效果,解放生产力,提高开发效率。

如果你没有任何小程序开发经验,可以结合官网的同时,参考下这个网站先学习一下https://www.w3cschool.cn/weixinapp/

下面以轮播图为例,讲下组件的封装:

一 、首先封装组件

创建swiper文件

微信小程序组件封装-如何进行属性判断_第1张图片

index.json

{
  "component": true
}

index.js

下面详解

Component({
  /**
  * 组件的属性列表
  */
  properties: {
  },
  methods: {
  }
});

properties一般我们常定义属性,常用写法

properties: {
    // 面板指示点
    indicatorDots: {
      type: Boolean,
      value: true
    }
}

如果要对属性进行判断,之前我们用vue封装,常这么写

props: {
    type: {
         validator (value) {
             return oneOf(value, ['success', 'info', 'warning', 'error']);
         },
         default: 'info'
     }
}

不过小程序,不支持这种写法,会报错,我们可以这么写:
如果写错,会报错误提示:”Error:Not a value in an array”
微信小程序组件封装-如何进行属性判断_第2张图片

index.wxml

这里的type控制轮播图的类型:是普通轮播图,还是一般我们在商品详情页中看到的那种轮播图
微信小程序组件封装-如何进行属性判断_第3张图片

methods里写自定义方法,我是这么写的,根据类型进行不同的逻辑判断,如果你只是展示,可以不写这个方法:

methods: {
    myTabClicked(e){
      switch (this.properties.type){
        case 'default':
            let {item:item} = e.currentTarget.dataset;
            this.triggerEvent('mygourl',item); //回调方法
            break;
        case 'detailSwiper':
            this.setData({ bigPicFlag: !this.data.bigPicFlag });
            break;
        default:
            break;
      }
    }
 }

index.wxss

为了好截图,我放个压缩版的
微信小程序组件封装-如何进行属性判断_第4张图片

二、页面中调用组件

这样组件就完成了,在页面中直接调用:
微信小程序组件封装-如何进行属性判断_第5张图片

另外在json中定义:

{
  "navigationBarTitleText": "swiper",
  "usingComponents": {
    "p-swiper": "../../dist/swiper/index"
  }
}

三、效果为:

本来录屏了,可是超过5M了,传不上来,放几张图片意思下
微信小程序组件封装-如何进行属性判断_第6张图片
微信小程序组件封装-如何进行属性判断_第7张图片
微信小程序组件封装-如何进行属性判断_第8张图片

希望对你有帮助,如果要转载,请注明出处。
如果你有更好的写法,可以留言和我交流下。

你可能感兴趣的:(移动端,微信,小程序,组件,移动端)