微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

微信小程序开发---自定义组件

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

创建自定义组件

类似于页面一个自定义组件由 json wxml wxss js 4个文件组成。要编写一个自定义组件,首先需要在 json 文件中进行自定义组件声明(将 component 字段设为 true 可这一组文件设为自定义组件):同时,还要在 wxml 文件中编写组件模板,在 wxss 文件中加入组件样式,它们的写法与页面的写法类似。在自定义组件的 js 文件中,需要使用 Component() 来注册组件,并提供组件的属性定义、内部数据和自定义方法。组件的属性值和内部数据将被用于组件 wxml 的渲染,其中,属性值是可由组件外部传入的。

使用自定义组件

使用已注册自定义组件前,首先要在页面的 json 文件中进行引用声明。这样,在页面的 wxml 中就可以像使用基础组件一样使用自定义组件。节点名即自定义组件的标签名,节点属性即传递给组件的属性值。

注意:

  • 因为 WXML 节点标签名只能是小写字母、中划线和下划线的组合,所以自定义组件的标签名也只能包含这些字符。
  • 自定义组件也是可以引用自定义组件的,引用方法类似于页面引用自定义组件的方式(使用 usingComponents 字段)。
  • 自定义组件和页面所在项目根目录名不能以“wx-”为前缀,否则会报错。

接下来我们自己创建一个<chw-toast>组件,效果图如下

分享图片

第一步:创建自定义组件

  • 创建组件chw-toast目录,存放各个文件

分享图片

分享图片

  • 创建自定义组件样式(container控制toast位置,toast-text控制文字格式)

分享图片

  • 修改chw-toast.js文件,其中值得注意的是设置timeout的时候需要获取当前this(hidden为false时候的)来重新setdata,而不能直接用this(hidden为true时候的)
// page/chw-toast.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    toastText:{
      type:String,value:‘chw‘
    }
  },/**
   * 组件的初始数据
   */
  data: {
    toastShow:false
  },/**
   * 组件的方法列表
   */

  methods: {
    showToast(text,time){
      this.setData({
        toastShow:!this.data.toastShow,toastText:text
      })

      if(time===undefined)
      {
        time=3000
      }
      var that=this
      setTimeout(function(){
        that.setData({
          toastShow:!that.data.toastShow
        })
      },time)
    }
  }
})

 

 第二步:使用组件

  • 在index.js中声明

分享图片

  • 在index.wxml引用

分享图片

  • 配置index.js,在渲染完成后,首先要获得chw-toast组件,得到该对象后通过绑定修改值,可以设置显示时间,可以采用认时间
// page/index/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
  
  },/**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  
  },/**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.chwtoast=this.selectComponent("#chw-toast")
  },showToast:function(){
    this.chwtoast.showToast("xixiixixi")
  },/**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
  
  },/**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },/**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },/**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },/**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },/**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  }
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。