微信小程序开发系列(三十四)·自定义组件的创建、注册以及使用(数据和方法事件的使用)

目录

1.  分类和简介

2.  公共组件

2.1  创建

2.2  注册

2.3  使用

 3.  页面组件

3.1  创建

3.2  注册

3.3  使用

4.  组件的数据和方法的使用

4.1  组件数据的修改

4.2  方法事件的使用


1.  分类和简介

        小程序目前已经支持组件化开发,可以将页面中的功能模块抽取成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。

开发中常见的组件有两种:

①  公共组件:将页面内的功能模块抽取成自定义组件,以便在不同的页面中重复使用

②  页面组件:将复杂的页面拆分成多个低耦合的模块,有助于代码维护

如果是公共组件,建议放在项目根目录的 components 文件夹中

如果是页面组件,建议放在对应页面的目录下

建议:一个组件一个文件夹

        开发中常见的组件主要分为公共组件页面组件两种,因此注册组件的方式也分为两种:

①  全局注册:在 app.json 文件中配置 usingComponents进行注册,注册后可以在任意页面使用。

②  局部注册:在页面的json文件中配置usingComponents进行注册,注册后只能在当前页面使用

        在 usingComponents 中进行组件注册时,需要提供自定义组件的组件名和自定义组件文件路径,在将组件注册好以后,直接将自定义组件的组件名当成组件标签名使用即可。

ps:之前的代码已被注释掉或者对本章节所要讲的代码无影响,每章代码(微信小程序开发系列)都是独立演示的。

页面都是随机的,不用一定要同种页面命名,主要在相同后缀。

2.  公共组件

2.1  创建

        点击文件夹,创建一个文件夹:

        右键刚才创建的文件夹,新建一个文件夹:

        如图点击:

        对于这一步老版本的可能就完成了,但对于新版本会有一个报错:

         解决方法就是custom-checkbox.json文件,找到:

  "component": true,

        将其删除,就可以了:

2.2  注册

        找到app.json文件:

  "usingComponents": {
    "custom-checkbox":"./components/custom-checkbox/custom-checkbox"
  }

2.3  使用

        找到custom-checkbox.wxml文件,编写:

<text>我是自定义组件</text>

        找到index.wxml文件,编写代码:

<custom-checkbox />

 3.  页面组件

3.1  创建

        按照下图操作:

3.2  注册

        随便写一点东西:

        找到index.json文件,进行局部注册:

3.3  使用

        由于是页面组件,只是在局部注册,只能在本页面使用。

注意:现如今版本在生成后会自己配置一个公共组件,如果不需要可以自行删除

        上面只是一些大概的使用演示。

        下面先演示,组件数据和方法的使用。

4.  组件的数据和方法的使用

需要在 组件.js 的Component方法中进行定义,Component 创建自定义组件。

①  data:定义组件的内部数据

②  methods :在组件中事件处理程序需要写到methods中才可以

        复制<custom-checkbox />组件,添加一个<view>组件,画一条线:

<view class="line"></view>

<custom-checkbox />

<view class="line"></view>

<custom-checkbox />

padding: 50rpx;:这行代码为 page 元素设置了 50rpx 的内边距(padding)。padding 是指元素内容与边框之间的距离,这里的 50rpx 表示内边距的大小为 50 个逻辑像素(rpx)。


box-sizing: border-box;:这行代码设置了 box-sizing 属性为 border-box。box-sizing 属性用于指定如何计算一个元素的总宽度和高度。当设置为 border-box 时,元素的宽度和高度将包括 padding 和 border,而不会受到这些属性的影响,确保元素的尺寸始终保持一致。

        找到index.scss文件,添加代码:

page{
  padding: 50rpx;
  box-sizing: border-box;
}

        找到custom-checkbox.wxml文件,创建两个<view>并给其附上类名:

<view class="custom-checkbox-container">
  <view class="custom-checkbox-box">
    <checkbox checked="{{ isChecked }}">
  </view>
</view>

        找到custom-checkbox.scss文件,将view编写成行内块元素:

.custom-checkbox-container{
  display: inline-block;
}

        在 HTML 和 CSS 中,元素可以分为行内元素(inline elements)、块级元素(block-level elements)和行内块元素(inline-block elements),它们在页面布局和显示方面有不同的特性。


块级元素(Block-level Elements):
①  块级元素会在页面上显示为一块独立的元素,通常会占据一整行或者一定的宽度。 
常见的块级元素包括 <div>、<p>、<h1>~<h6>、<ul>、<ol>、<li> 等。 
②  块级元素可以容纳内联元素和其他块级元素。 

行内元素(Inline Elements):
①  行内元素在页面上显示时通常不会换行,它们会沿着文本流水平排列。 
常见的行内元素包括 <span>、<a>、<strong>、<em>、<img>、<input> 等。 
②  行内元素不能设置宽度和高度,且宽度和高度由其内容决定。 

行内块元素(Inline-block Elements):
①  行内块元素结合了行内元素和块级元素的特点,可以设置宽度和高度,且在同一行内显示。 
②  常见的行内块元素包括 <button>、<input>(当设置为 display: inline-block; 时)、<label> 等。 
        行内块元素可以像块级元素一样设置宽度和高度,同时又可以在同一行内显示,是一种灵活的元素类型。 

4.1  组件数据的修改

        data:定义组件的内部数据。

        找到custom-checkbox.js文件,找到data,更改代码为:

  /**
   * 组件的初始数据:用来定义当前组件内部所需要的数据
   */
  data: {
    isChecked:false
  },

        找到custom-checkbox.wxml文件,创建一个绑定事件:

<view class="custom-checkbox-container">
  <view class="custom-checkbox-box">
    <checkbox checked="{{ isChecked }}" bind:tap="updateChecked"></checkbox>
  </view>
</view>

4.2  方法事件的使用

        methods :在组件中事件处理程序需要写到methods中才可以。

         找到custom-checkbox.js文件,找到methods编写代码:

  /**
   * 组件的方法列表:在组件中所有的事件处理程序,都需要写到methods方法中
   */
  methods: {
    // 更新复选框状态
    updateChecked(){

      // 通过取反isChecked的值来获取每次事件点击后的值
      // 例如初始时false,点击后为true,即对false取反
      this.setData({
        isChecked:!this.data.isChecked
      })
    }
  }

        点击复选框:

微信小程序开发_时光の尘的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/463153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度解析:如何运用山海鲸可视化软件制作高效销售数据看板

在数字化时代&#xff0c;数据可视化已经成为企业决策和运营的重要工具。作为一名长期使用山海鲸可视化软件的资深用户&#xff0c;我深知其在制作销售数据可视化看板方面的优势。今天&#xff0c;我想分享一些我在使用山海鲸可视化软件制作销售数据可视化看板过程中的经验和感…

面向控制台编程?Java的GUI开发

记得之前刚开始学习Java&#xff0c;按部就班去阅读《Java核心技术》这本书的时候&#xff0c;总是听别人提起&#xff0c;java swing那一章不用看了。然后直到对着控制台编程了半年&#xff0c;回来捡起了Swing图形界面&#xff0c;跟着网上搞了坦克大战的游戏&#xff0c;总觉…

抖去推无人直播+矩阵托管+AI文案撰写一体化工具如何开发搭建

一、 开发和搭建抖去推无人直播矩阵托管AI文案撰写一体化工具需要以下步骤&#xff1a; 确定功能需求&#xff1a;确定抖去推无人直播、矩阵托管和AI文案撰写的具体功能需求&#xff0c;如直播推流、直播管理、托管服务、AI文案生成等。 技术选型&#xff1a;选择适合开发该工…

Spring Boot 中的 Sleuth 详解

Spring Boot 中的 Sleuth 是一个用于分布式追踪的库&#xff0c;它可以帮助你追踪和理解分布式系统中的请求如何跨越多个服务和网络调用。通过使用 Sleuth&#xff0c;你可以收集关于请求路径、延迟、异常等的信息&#xff0c;从而更容易地诊断问题并进行性能优化。 一、下面是…

ArcGIS分享图层数据的最佳方法

在工作中&#xff0c;经常需要将图层数据分享给其他人。 如下图所示&#xff0c;需要分享的是【CJDCQ】和【GHDLTB】&#xff0c;图层带有符号系统&#xff1a; 一、分享gdb数据库及lyr文件 分享数据自然要找到源数据&#xff1a; 但是&#xff0c;gdb数据是不带符号系统的&a…

软考高级:软件工程瀑布模型概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Android 开发 地图 polygon 显示信息

问题 Android 开发 地图 polygon 显示信息 详细问题 笔者进行Android项目开发&#xff0c;接入高德地图绘制区域后&#xff0c;需要在指定区域&#xff08;位置&#xff09;内显示文本信息&#xff0c;如何实现 实现效果 解决方案 代码 import com.amap.api.maps.model.T…

R语言中的常用基础绘图函数 直方图,箱线图,条形图,散点图

目录 R语言中的绘图参数 绘图函数 1.plot函数绘制散点图 2.hist函数绘制直方图 如何修饰直方图? 如何在直方图上标注各组频数&#xff1f; 使用text函数把某些信息标注在直方图上 如何在直方图上添加概率密度曲线&#xff1f; 3.boxplot函数绘制箱线图 4.barplot函数…

爬虫学习 Scrapy中间件代理UA随机selenium使用

目录 中间件UA、代理处理---process_requestUA随机 代理处理seleniumscrapy 中间件 控制台操作 (百度只起个名 scrapy startproject mid scrapy genspider baidu baidu.com setting.py内 ROBOTSTXT_OBEY FalseLOG_LEVEL "WARNING"运行 scrapy crawl baidu middle…

Rust 程序设计语言学习——所有权

这一节主要来学习 Rust 语言的其他特性&#xff0c;所有权、引用与借用、Slice 类型。 1 所有权 Rust 的核心功能&#xff08;之一&#xff09;是所有权&#xff08;ownership&#xff09;。虽然该功能很容易解释&#xff0c;但它对语言的其他部分有着深刻的影响。 所有程序…

宜搭faas服务器获取accessToken

可以用faas服务器的OpenAPIUtil.getCustomAccessTokenThenCache&#xff08;Client ID,Client Secret&#xff09;就可以获取 至于获取这个Client ID&#xff0c;Client Secret 就需要在钉钉开放平台创建一个应用 然后在这个应用的基础信息里面有 注意的是&#xff1a;如果需要…

软考79-上午题-【面向对象技术3-设计模式】-结构型设计模式02

一、组合模式 1-1、意图 将对象组合成树型结构&#xff0c;以表示"部分-整体"的层次结构。Composite使得用户对单个对象和组 合对象的使用具有一致性。 示例&#xff1a;对象&#xff1a;文件、文件夹 1-2、结构 Component 为组合中的对象声明接口&#xff1b;在适…

深入理解RAG:检索与生成的融合

原文地址&#xff1a;https://dev.to/portkey/understanding-rag-a-deeper-dive-into-the-fusion-of-retrieval-and-generation-1l4b 深入理解RAG:检索与生成的融合 检索增强生成(RAG)模型代表了检索系统和生成模型两大不同但互补组件完美结合的杰作。通过无缝集成相关信息检…

HM2019碰撞安全之假人定位

1、调整假人的位置&#xff08;Tools→Dummy&#xff09; 2、对假人的姿态进行调整 方法一&#xff1a;手动调整 方法二&#xff1a;自动调整 3、假人姿态调整后&#xff0c;还可以对假人目前的姿态保存。 4、将假人恢复到最初状态方法 5、将假人与座椅相关联&#xff08;Tool…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:WaterFlow)

瀑布流容器&#xff0c;由“行”和“列”分割的单元格所组成&#xff0c;通过容器自身的排列规则&#xff0c;将不同大小的“项目”自上而下&#xff0c;如瀑布般紧密布局。 说明&#xff1a; 该组件从API Version 9 开始支持。后续版本如有新增内容&#xff0c;则采用上角标单…

Rust写一个wasm入门并在rspack和vite项目中使用(一)

rust打包wasm文档 文档地址 安装cargo-generate cargo install cargo-generate 安装过程中有问题的话手动安装cargo-generate下载地址 根据自己的系统下载压缩包&#xff0c;然后解压到用户/.cargo/bind目录下&#xff0c;将解压后的文件放到该目录下即可。 创建wasm项目 …

wsl ubuntu 安装cuda nvcc环境

wsl ubuntu 安装cuda环境&#xff1a; CUDA Toolkit 11.6 Downloads | NVIDIA DeveloperDownload CUDA Toolkit 11.6 for Linux and Windows operating systems.https://developer.nvidia.com/cuda-11-6-0-download-archive?target_osLinux&target_archx86_64&Distri…

[MTK6771] android13系统启用OMAPI 支持esim.me

OMAPI是啥&#xff1f;看看谷歌的解释&#xff1a; 说了一大堆懂的人不需要看&#xff0c;不懂的还是看不懂&#xff0c;我就是后者 总之说人话就是&#xff0c;像SIM卡&#xff0c;NFC这类模块需要用到这个东西&#xff0c;那么接着往下看 上层APP想要使用这个OMAPI供应商稳…

相机与相机模型(针孔/鱼眼/全景相机)

本文旨在较为直观地介绍相机成像背后的数学模型&#xff0c;主要的章节组织如下&#xff1a; 第1章用最简单的针孔投影模型为例讲解一个三维点是如何映射到图像中的一个像素 第2章介绍除了针孔投影模型外其他一些经典投影模型&#xff0c;旨在让读者建立不同投影模型之间的建模…

(学习日记)2024.03.12:UCOSIII第十四节:时基列表

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…