自定义组件

自定义组件

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

为什么使用自定义组件

 

创建组件的流程

 1>项目根目录下创建一个components文件(默认命名文件),在文件夹下创建一个组件文件夹,在组件文件夹下,创建对应的四个组件文件

 

 

 

 注意:每个组件都有四个文件components.wxml  ,  component.wxss  , component.json  ,  component.js

 components.wxml:组件的模板文件

 component.wxss :组件的样式文件

 component.json

{
  "component": true,  //告诉小程序,这是一个组件,如果当做组件使用,这个属性设置为true
  "usingComponents": {}  //使用其他的组件
}

 component.js

// pages/components/heads/heads.js
Component({    //定义组件,记录了这个组件的所有逻辑任务
  /*** 组件的属性列表*/
  properties: {},
/*** 组件的初始数据*/
  data: {},
/*** 组件的方法列表*/
  methods: {}
})

使用组件

在新建的文件夹中使用自定义的组件

{
  "usingComponents": {
    "heads":"../components/heads/heads"    //使用键值对的形式,“自定义组件的名字”:“自定义组件的地址”
  }
}

在新建文件夹的.wxml文件中以标签的形式使用该组件

<!--pages/page1/page1.wxml-->
<text>pages/page1/page1.wxml</text>
<heads>
</heads>

 

 

 

案例

自定义组件名称nav

<!--pages/components/nav/nav.wxml-->
<view class="nav">
<view 
    wx:for="{{arr}}" 
    wx:key="id"
    class="{{a==index?'active':''}}"
    bindtap="click"
    data-index="{{index}}"
    >
    {{item.title}}</view>
</view>
// pages/components/nav/nav.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    arr:[{
      "id":0,
      "title":"推荐",
    },{
      "id":1,
      "title":"排行",
    },{
      "id":2,
      "title":"分类",
    },{
      "id":3,
      "title":"歌手",
    },{
      "id":4,
      "title":"MV",
    }],
      a:0
  },

  /**
   * 组件的方法列表
   */
  methods: {
      click:function(e){
         var index=e.target.dataset.index;
         this.setData({
           a:index
         })
         console.log(index)
        // console.log(e)
      }
  }
})

在使用组件的.json文件中引入该文件并在.wxml文件中使用组件

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

 

 

注意:

  • data-index自定义组件属性
  • 列表循环注意item和index关键字
  • 组件中的事件函数放在methods中

 

posted @ 2021-10-13 22:36  keyeking  阅读(219)  评论(0编辑  收藏  举报