微信小程序如何封装自己的组件?

168 篇文章 3 订阅
34 篇文章 18 订阅

在现在前端领域,最常见的话语就是组件化、工程化的内容。所有的框架都在朝着这方面发展。作为前端生态中的新兴热人物小程序的出现,同样支持组件化开发

在我们的日常开发中,可以封装一些常用的组件达到复用效果,可以大大提高我们的工作效率。今天我们学习一下如何在微信小程序中封装自己的组件。

首先我们在app.json中新建一个页面,组件自己的结构普通页面的机构是一样的,同样由.js.json.wxmlwxss组成,所以我们像注册一个普通页面一样注册它。

我们来试着封装一个一键返回顶部的按钮。

首先进去页面的json文件,把component属性设置为true

{
  "component":true
}

wxml代码如下:

<view class="inner" bindtap="scrollTop">
  {{btnFont}}
</view>

wxss代码如下:

page {
  height: 2000rpx;
}
.inner {
  width: 160rpx;
  height: 160rpx;
  line-height: 160rpx;
  border-radius: 50%;
  background-color: rgb(45, 150, 233);
  text-align: center;
  font-weight: bold;
  position: fixed;
  right: 40rpx;
  bottom: 40rpx;
}

wxmlwxss的代码和普通页面的格式一模一样。

js内容如下:

Component({
  properties: {
    btnFont: {
      type: String,
      value: 'default value'
    }
  },
  data: {
    someData:{}
  },
  methods: {
    scrollTop() {
      if(wx.pageScrollTo) {
        wx.pageScrollTo({
          scrollTop:0
        })
      }else {
        wx.showModal({
          title:'提示',
          content:'当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试!'
        })
      }
   }
  },
  lifetimes: {

  },
})

我们来看一下它和普通页面的js结构上有什么区别?

普通的页面的js文件中是由Page({})涵盖的,而组件的js文件是由Component({})涵盖的。对象中的内容也略有不同。

Component对象中的全部属性如下:

定义段类型是否必填描述最低版本
propertiesObject Map组件的对外属性,是属性名到属性设置的映射表
dataObject组件的内部数据,和properties一同用于组件的模板渲染
observersObject组件数据字段监听器,用于监听propertiesdata的变化2.6.1
methodsObject组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
behaviorsString Array类似于mixins和traits的组件间代码复用机制
createdFunction组件生命周期函数-在组件实例刚刚被创建时执行,注意此时不能调用 setData
attachedFunction组件生命周期函数-在组件实例进入页面节点树时执行
readyFunction组件生命周期函数-在组件布局完成后执行
movedFunction组件生命周期函数-在组件实例被移动到节点树另一个位置时执行
detachedFunction组件生命周期函数-在组件实例被从页面节点树移除时执行
relationsObject组件间关系定义
externalClassesString Array组件接受的外部样式类
optionsObject Map一些选项(文档中介绍相关特性时会涉及具体的选项设置,这里暂不列举)
lifetimesObject组件生命周期声明对象
pageLifetimesObject组件所在页面的生命周期声明对象
definitionFilterFunction定义段过滤器,用于自定义组件扩展

Component对象的属性有很多,最常用的就是propertiesdatamethods,lifetimes

其实properties,如果你学习过Vue的话,这个东西的作用和props是一模一样的,我们可以在这里设置组件属性的格式。比如我们这个按钮,我想让按钮的文字动态显示,在页面中使用的时候动态设置,所以我们在wxml中用{{}}设置内容为btnFont,在jsproperties中设置它的接收格式和默认值。

因为这个按钮的功能是返回顶部,所以我们在组件封装的时候就可以把事件绑定上,在scrollTop方法中,我们写入了返回顶部的代码。

到这里,我们就可以完成了一个组件的封装。

接下来就是引入了,首先我们要先进入引入页面的json文件中

{
  "usingComponents": {
    "ScrollTop":"../testDemo/testDemo"
  }
}

usingComponents属性就是用来挂载组件的,属性的key就是组件的名字,value就是组件的路径

然后直接去wxml中使用即可。

<ScrollTop btnFont="返回顶部" style="display:{{isHidden}}"></ScrollTop>

有部分js内容需要在使用页面中写,比如监听当前窗口距离顶部的高度。

  data: {
    isHidden:'none'
  },
  onPageScroll(e) {
    console.log(e);
    if(e.scrollTop !== 0) {
      this.setData({
        isHidden:'block'
      })
    }else {
      this.setData({
        isHidden:'none'
      })
    }
  },

在这里插入图片描述

这样我们就完成了封装自己的组件并且应用到实际场景中的内容。

有任何问题都可以联系我哦!
QQ:505417246
微信:18331092918
微信公众号:Code程序人生
个人博客:https://Creator12333.github.io

在这里插入图片描述

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以按照以下步骤封装table组件: 1. 创建一个新的小程序页面,命名为table。 2. 在table页面中创建一个template组件,用于显示表格的表头和表格数据。 3. 在template组件中定义表格的表头和表格数据,可以通过传入组件的props来动态生成表格。 4. 在template组件中使用wx:for循环遍历表格数据,动态生成表格行和列。 5. 在template组件中使用wx:if判断表格数据是否为空,如果为空则显示“暂无数据”,否则显示表格数据。 6. 在table页面中创建一个新的js文件,命名为table.js。 7. 在table.js文件中定义一个名为table的组件,用来引用template组件和管理table的状态和行为。 8. 在table.js文件中定义onLoad函数,用来初始table组件的状态和获取数据。 9. 在table.js文件中定义一个名为refresh的函数,用来刷新表格数据。 10. 在table.js文件中定义一个名为loadMore的函数,用来加载更多数据。 11. 在table.js文件中定义一个名为sort的函数,用来对表格数据进行排序。 12. 在table.js文件中定义一个名为filter的函数,用来对表格数据进行筛选。 13. 在table.js文件中定义一个名为search的函数,用来搜索表格数据。 14. 在table.js文件中定义一个名为onSelect的函数,用来处理表格行的选择事件。 15. 在table.js文件中定义一个名为onEdit的函数,用来处理表格行的编辑事件。 16. 在table.js文件中定义一个名为onDelete的函数,用来处理表格行的删除事件。 17. 在table.js文件中定义一个名为onExport的函数,用来处理表格数据的导出事件。 18. 在table.js文件中定义一个名为onImport的函数,用来处理表格数据的导入事件。 19. 在table.js文件中定义一个名为onPrint的函数,用来处理表格数据的打印事件。 20. 在table.js文件中定义一个名为onShare的函数,用来处理表格数据的分享事件。 21. 在table.js文件中导出table组件。 22. 在需要使用table组件的页面中引用table.js文件,并使用table组件。 这样就完成了一个简单的微信小程序封装table组件的流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CreatorRay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值