微信小程序:自定义组件 星星评分

与 Vue 很相像,小程序也支持简洁的组件化编程,可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中复用,提高自己代码的可读性,降低自己维护代码的成本! 先看效果:

啥也别说了,上代码:

组件

<!--components/star/star.wxml-->
<view class='star'>
  <image class='icon-star' src='star1.png' wx:for="{{Anum1}}"></image>
  <image class='icon-star' src='star2.png' wx:for="{{Anum2}}"></image>
</view>
// components/star/star.js
Component({
  /**
   * 组件的属性列表
   * 用于组件自定义设置
   */
  properties: {
    total: { // 星星总数
      type: Number, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
      value: 1 // 属性初始值(可选),如果未指定则会根据类型选择一个
    },
    num: { // 点亮的星星个数
      type: Number,
      value: 1,
      observer: function(val){ // 重要!! 数据改变时调用的方法
        this.setData({
          Anum1: new Array(val > this.properties.total ? this.properties.total : val),
          Anum2: new Array(this.properties.total - val >= 0 ? this.properties.total - val : 0)
        })
      }
    }
  },

  /**
   * 组件的初始数据
   * 可用于模版渲染
   */
  data: {
    Anum1: null,
    Anum2: null
  },

  ready: function() {
    this.setData({
      Anum1: new Array(this.properties.num),
      Anum2: new Array(this.properties.total - this.properties.num)
    })
  }

})

/* components/star/star.wxss */
.star{
  height: 100%;
  display: flex;
  align-items: center;
}
.icon-star{
  margin: 0 2rpx; 
  width: 32rpx;
  height: 32rpx;
}

使用

// 在使用页面的json文件中注册
// index.json 
{
  "usingComponents": {
    "star": "../../components/star/star"
  }
}

// index.wxml
<view class="box">
  <star total="{{total}}" num="{{num}}"></star>
</view>

// index.js
this.setData({
  total: 3,
  num: 1
})

// index.wxss
.box {
  padding: 0 10rpx;
  height: 44rpx;
  line-height: 44rpx;
  text-align: center;
  font-size: 28rpx;
  border-radius: 22rpx;
  background-color: rgb(95, 140, 206);
  box-shadow: inset 0 -2rpx 0 0 rgb(77, 119, 182);
}

感谢浏览,欢迎评论指正,转载请标明出处。

参考文档:
官方文档:自定义组件
手把手教你实现微信小程序中的自定义组件

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,153评论 25 708
  • 2018-4-10 彩虹卡 颜色:红,海底轮 物质 元素:土 理解:钱、珍宝属于财富,财富不仅仅只是这些。还有源源...
    聊愈者李奕葳阅读 826评论 0 3
  • 勇气 今天下午,品德课上讲到遇到困难怎么办? 当我讲到怎样克服困难,战胜困难时,我提出一个挑战,谁敢走上讲台说几句...
    一枚冰儿阅读 240评论 0 0
  • 29
    程序媛啊阅读 213评论 0 0
  • 20170504 晴朗 外出 没排 【早餐】8:00 苹果➕石榴 【午餐】13:30 奶茶 【下午茶】17:00 ...
    carmenMP阅读 237评论 0 0

友情链接更多精彩内容