首页 > 编程语言 >微信小程序组件化开发教程、微信小程序组件化开发示例代码

微信小程序组件化开发教程、微信小程序组件化开发示例代码

时间:2023-03-31 17:37:04浏览次数:46  
标签:程序 微信 Component list header 组件 模板

微信小程序中的组件化开发可以使用 templateComponent 两种方式来实现。

template 模板实现组件

template 模板是一种很简单的组件化方式,通常用于展示静态的内容。可以将页面中的某一段代码封装为一个 template 模板,再在需要使用的地方引入该模板即可。

下面以一个简单的自定义头部组件为例,先在 index.json 中定义好头部组件:

json
{
  "usingComponents": {
    "custom-header": "/components/header/header"
  }
}

然后在 components 文件夹下创建 header 文件夹,并在该文件夹下创建 header.wxmlheader.wxss 两个文件,分别用于编写组件的模板和样式,例如:

header.wxml

html
<view class="header">
  <image class="logo" src="../images/logo.png"></image>
  <text class="title">{{title}}</text>
</view>

header.wxss

css
.header {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 60rpx;
  background-color: #FFFFFF;
  border-bottom: 1rpx solid #E6E6E6;
}

.logo {
  width: 40rpx;
  height: 40rpx;
}

.title {
  font-size: 28rpx;
  margin-left: 20rpx;
}

header.js 中定义组件的属性:

js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    title: { // 页面标题
      type: String,
      value: '默认标题'
    }
  },
})

最后在需要使用头部组件的页面中使用 <custom-header> 标签引用该模板文件,并传入需要显示的标题:

html
<custom-header title="首页"></custom-header>

Component 构造器实现组件

Component 构造器是一种更灵活、更复杂的组件化方式,可以自定义组件的行为、事件等。下面以一个自定义列表组件为例,介绍如何使用 Component 构造器来实现组件化开发。

首先在 components 文件夹下创建 list 文件夹,并在该文件夹下创建 list.wxmllist.wxss 两个文件,分别用于编写组件的模板和样式,例如:

list.wxml

html
<scroll-view class="list" scroll-y="true" bindscrolltolower="_loadMore">
  <slot name="item"></slot>
</scroll-view>

list.wxss

css
.list {
  width: 100%;
  height: 100%;
}

.list::after {
  content: "";
  display: block;
  padding-bottom: 20rpx; /* 预留底部距离 */
}

list.js 中定义组件,并实现相应的逻辑:

js
Component({
  options: {
    multipleSlots: true // 启用多插槽支持
  },
  /**
   * 组件的属性列表
   */
  properties: {
    hasMore: { // 是否还有更多数据
      type: Boolean,
      value: true
    }
  },
  /**
   * 组件的初始数据
   */
  data: {},
  /**
   * 组件的方法列表
   */
  methods: {
    _loadMore() { // 加载更多数据
      if (this.data.hasMore) {
        this.triggerEvent('loadmore')
      }
    }
  }
})

在需要使用列表组件的页面中使用 <list> 标签引用该组件,并在插槽中插入需要展示的数据项:

html
<list has-more="{{hasMore}}" bind:loadmore="_loadMore">
  <block wx:for="{{list}}" wx:key="index">
    <slot name="item">
      <view class="item">{{item.name}}</view>
    </slot>
  </block>
</list>

在以上代码中,list 是一个数组,用于存储需要展示的数据。在组件的模板中使用 wx:for 遍历数据,并通过插槽传入 item 数据。

总而言之,这就是微信小程序代码组件化开发的基本流程。对于具体实现,可以根据项目需求和技术水平选择适合自己的方式进行组件化开发。

标签:程序,微信,Component,list,header,组件,模板
From: https://www.cnblogs.com/shamo89/p/17276952.html

相关文章

  • 微信小程序中图片上传
    封装了图片上传组件,支持多张上传,图片预览代码如下:组件调用:index.tsx<UploadPicmaxNumber={3}fileList={pics}fileChange={(e)=>{console.log('e',e)setPics(e)}}/>图片上传封装UploadPic.tsximportReactfrom'react';importTarofrom&......
  • 通过MapEdit源程序的学习MAP文件 3, 改编程序,没有编辑功能,只显示MAP
    unitshowmap;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,StdCtrls,WIL,ComCtrls;constUNITX=48;UNITY=32;typeTMapInfo=packedrecord//这个好像不需要PACKED......
  • 通过MapEdit源程序的学习MAP文件 2, 极度简化的程序,只有显示MAP
      1,地图编辑器。主界面EdMainin'EdMain.pas'{FrmMain},2,大号地砖?有界面mpalettin'mpalett.pas'{FrmMainPal},3,素材数据有界面FObjin'FObj.pas'{FrmObj},4,数据合成编辑器,有界面,ObjEditin'ObjEdit.pas'{FrmObjEdit},5,提取数据,有界面,ObjSet......
  • SpringBoot 集成微信支付的各种支付产品
    SpringBoot是一款非常流行的Java开发框架,而微信支付则是众多移动支付产品中的佼佼者,整合两者可以让我们更方便地开发各种支付产品。在本篇博客中,我将介绍如何在SpringBoot中整合微信支付的各种支付产品。准备工作微信支付官网注册一个微信支付商户账号创建一个微信支付应用......
  • 逍遥自在学C语言 | 第一个C语言程序 九层之台起于垒土
    一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、C语言简介C语言是一种高级语言,运行效率仅次于汇编,支持跨平台C语言是学习其他高级语言的基础,如C++、Java和Python三、编程环......
  • 用jvisualvm监控远程java程序
    jvisualvm是一个JDK自带的java性能监控程序。对于本地监控,直接启动jvisualvm,在它面板里面就可以看到所有在运行的java程序。但是如果要监控在别的机器上运行的java程序,那么运行的时候要多加几个参数(假设我们的类名字叫Hello):java-Dcom.sun.management.jmxremote-Dcom.sun.man......
  • 微信小程序累计独立访客(UV)不低于 1000 是什么意思
    首先微信小程序“累计独立访客(UV)不低于1000”是指UV是UniqueVisitor的英文缩写,1天内相同的访客多次访问您的网站只计算1个UV,以cookie为依据。简单的说就是指:累计的不同IP的访客合计达到1000+才能开通流量主独立访客(UV)名词:UV=UniqueVisitor(独立访客数)说明:1天内相同的访客多......
  • vue3 - 在单独的项目制作自定义组件插件,支持vite【前提不要使用webpack专属语法】
    1.背景与vue2组件不一样,没有那么随意,如果想要支持vite,那么不要使用webpack专属语法,如defide和 require等2.解决在 package.json文件属性  main配置为插件入口文件位置,至于是js还是ts随意 目录  简单做了个组件  入口文件内容如下importComponentf......
  • 微信小程序i18n文件夹新增语言文件报:module is not defined
    背景:微信开发者工具的版本:1.06.2303060Stable 解决步骤:1.首先需要排除的是代码逻辑层面没有问题,对应要require的js文件也存在。2.升级微信开发者工具到最新版本3.打开详情=》本地设置,把“将JS编译成ES5”的去掉勾选后再次选择4.重新打开项目......
  • 分析微信好友数据,可以可视化好友男女比例分布,可视化省份来源,可视化签名的情感强度值
    一、分析数据可视化好友男女分布比例 1plt.rcParams['font.sans-serif']=['SimHei']2#用来正常显示中文标签3plt.rcParams['axes.unicode_minus']=False45#1.读取csv文件,把性别信息读取出来6defgetSex(filename):7lstsex=[]8withopen(fi......