一般创建一个 components 的文件夹来管理,一个自定义组件由 ​​json​​​ ​​wxml​​​ ​​wxss​​​ ​​js​​ 4个文件组成。

首先需要在 ​​json​​​ 文件中进行自定义组件声明(将 ​​component​​​ 字段设为 ​​true​​ 可将这一组文件设为自定义组件):【如果是按照下面的方式常见 是自动生成的】

微信小程序  自定义组件_自定义组件    注意:  这里的 compoments 打错了  应该是: component

 

 

 

然后微信小程序会自动创建好那四个页面 ,和普通页面的没什么区别,但是js文件中用的不是page() 而是 compontent :

微信小程序  自定义组件_xml_02微信小程序  自定义组件_xml_03

// compoments/tabs/tabs.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})

tabs.js

tabs.js:

微信小程序  自定义组件_xml_04

 


 

我们做一个小小的导航栏吧:

组件tabs:

tabs.wxml

<view class="tabs">
  <view class="tabs_title">
  <!--
  其中:data-index 是一个传参(JS基础)
 -->
      <view wx:for="{{tabs}}" class="tabs_item {{item.isActive === true ? 'active' :''}}"  wx:key="id" bindtap="active" data-index="{{index}}" >{{item.title}}</view>
</view>
  <view class="tabs_content">内容</view>
</view>

微信小程序  自定义组件_xml_02微信小程序  自定义组件_xml_03

{
  "component": true,
  "usingComponents": {}
}

tabs.json

微信小程序  自定义组件_xml_02微信小程序  自定义组件_xml_03

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    tabs:[
      {id:0,title:"首页",isActive:true},
      {id:1,title:"社区",isActive:false},
      {id:2,title:"交易",isActive:false},
      {id:3,title:"个人",isActive:false},
    ]
  },

  /**
   * 组件的方法列表
   */
  methods: {
    active(e){
      const index = e.currentTarget.dataset.index;  //获取点击下标
      const tabs = [].concat(this.data.tabs);     //复制data中的tabs。
      tabs.forEach(v => {index == v.id?v.isActive = true : v.isActive = false});

      console.log(tabs);
      this.setData({
        tabs
      })

      console.log(this.data);
    }
  }
})

tabs.js

微信小程序  自定义组件_xml_02微信小程序  自定义组件_xml_03

.tabs_title{
  display: flex;
  padding: 10rpx;  
}

.tabs_item{
  flex:1;
  text-align: center;
}

.active{
  border-bottom: 10rpx solid red;
}

tabs.wxss

 

使用组件 index页面:

微信小程序  自定义组件_xml_02微信小程序  自定义组件_xml_03

{
    "usingComponents": {
    "tabs":"../../components/tabs/tabs"
    }
}

index.json

<tabs></tabs>      tabs.wxml

 

效果图:

微信小程序  自定义组件_xml_13

 


作者:​​咸瑜​​​