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

news2024/11/25 2:33:13

目录

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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PyTorch】基础学习:一文详细介绍 torch.load() 的用法和应用

【PyTorch】基础学习&#xff1a;一文详细介绍 torch.load() 的用法和应用 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f44…

基于Android Studio的小米便签App的代码泛读结对心得体会

本次实验我本来最开始使用的是2023.2.1.23的Android studio版本&#xff0c;但是在选择项目的时候没有编程语言为java的选项导致导入项目之后运行不起来。 创建完项目之后默认的代码块是MainActivity.kt&#xff0c;这里面不能编写java代码 所以我选择了退版本退到21海豚版本…

AcWing 2. 01背包问题

题目描述 解题思路&#xff1a; 相关代码&#xff1a; import java.util.Scanner; public class Main {public static void main(String[] args){Scanner scanner new Scanner(System.in);/** 背包问题的物品下标最好从1开始。* *//*定义一f[i][j]数组&#xff0c;i表示的…

Java学习笔记------常用API(五)

爬虫 从网站中获取 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.reg…

论文浅尝 | GPT-RE:基于大语言模型针对关系抽取的上下文学习

笔记整理&#xff1a;张廉臣&#xff0c;东南大学硕士&#xff0c;研究方向为自然语言处理、信息抽取 链接&#xff1a;https://arxiv.org/pdf/2305.02105.pdf 1、动机 在很多自然语言处理任务中&#xff0c;上下文学习的性能已经媲美甚至超过了全资源微调的方法。但是&#xf…

2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】

最近回顾了Java B组的试题&#xff0c;深有感触&#xff1a;脑子长时间不用会锈住&#xff0c;很可怕。 兄弟们&#xff0c;都给我从被窝里爬起来&#xff0c;赶紧开始卷&#xff01;&#xff01;&#xff01; 2022年第十三届蓝桥杯Java B组(第一部分 A~F题) 目录 一、填空题 …

Rabbit MQ详解

写在前面,由于Rabbit MQ涉及的内容较多&#xff0c;赶在春招我个人先按照我认为重要的内容进行一定总结&#xff0c;也算是个学习笔记吧。主要参考官方文档、其他优秀文章、大模型问答。自己边学习边总结。后面有时间我会慢慢把所有内容补全&#xff0c;分享出来也是希望可以给…

可视化搭建一个智慧零售订单平台

前言 智慧零售行业是在数字化浪潮中快速发展的一个领域&#xff0c;它利用先进的信息技术和大数据分析来提升零售业务的效率和顾客体验。智慧零售订单平台&#xff0c;具有跨平台、数据智能清洗和建模&#xff0c;以及更加丰富的数据展示形式等优势。智慧零售订单平台可以以文…

MySQL8空间索引失效

发现问题 表结构如下&#xff0c;boundary字段建立空间索引 CREATE TABLE area (id int(11) NOT NULL COMMENT 行政区划编码,pid int(11) NOT NULL COMMENT 上级编码,deep int(11) NOT NULL COMMENT 深度,name varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_…

镜像制作实战篇

“ 在失控边缘冲杀为&#xff0c;最终解脱” CMD与EntryPoint实战 EntryPoint 与 CMD都是docker 镜像制作中的一条命令&#xff0c;它们在概念上可能有些相似&#xff0c;但在使用中&#xff0c;两者是有明显的区别的。比如&#xff0c;执行一个没有调用EntryPoint、CMD的容器会…

一起学数据分析_3(模型建立与评估_1)

使用前面清洗好的数据来建立模型。使用自变量数据来预测是否存活&#xff08;因变量&#xff09;&#xff1f; &#xff08;根据问题特征&#xff0c;选择合适的算法&#xff09;算法选择路径&#xff1a; 1.切割训练集与测试集 import pandas as pd import numpy as np impo…

使用PWM实现呼吸灯功能

CC表示的意思位捕获比较&#xff0c;CCR表示的是捕获比较寄存器 占空比等效于PWM模拟出来的电压的多少&#xff0c;占空比越大等效出的模拟电压越趋近于高电平&#xff0c;占空比越小等效出来的模拟电压越趋近于低电平&#xff0c;分辨率表示的是占空比变化的精细程度&#xf…

(done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW

一个视频&#xff1a;https://www.bilibili.com/video/BV1mb4y1y7EB/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 这里有个视频&#xff0c;讲解得更加生动形象一些 总得来说&#xff0c;词袋模型(Bow, bag-of-words) 是最简…

spring boot nacos注册微服务示例demo_亲测成功

spring boot nacos注册微服务示例demo_亲测成功 先安装好Nacos Nacos安装使用 创建Maven项目 结构如图 例如项目名为: test-demo 下面有个子模块: test-demo-data-process 父模块pom.xml <?xml version"1.0" encoding"UTF-8"?> <project …

【Micropython ESP32】定时器Timer

文章目录 前言一、分频系数1.1 为什么需要分频系数1.2 分频系数怎么计算 二、如何使用定时器2.1 定时器构造函数2.2 定时器初始化2.3 关闭定时器 三、定时器示例代码总结 前言 在MicroPython中&#xff0c;ESP32微控制器提供了丰富的功能&#xff0c;其中之一是定时器&#xf…

【消息队列开发】 实现MemoryDataCenter类——管理内存数据

文章目录 &#x1f343;前言&#x1f334;数据格式的准备&#x1f332;内存操作&#x1f6a9;对于交换机&#x1f6a9;对于队列&#x1f6a9;对于绑定&#x1f6a9;对于单个消息&#x1f6a9;对于队列与消息链表&#x1f6a9;对于未确认消息&#x1f6a9;从硬盘上读取数据 ⭕总…

SpringCloud-深度理解ElasticSearch

一、Elasticsearch概述 1、Elasticsearch介绍 Elasticsearch&#xff08;简称ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;构建在Apache Lucene基础上。它提供了一个强大而灵活的工具&#xff0c;用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用…

ARM和AMD介绍

一、介绍 ARM 和 AMD 都是计算机领域中的知名公司&#xff0c;它们在不同方面具有重要的影响和地位。 ARM&#xff08;Advanced RISC Machine&#xff09;&#xff1a;ARM 公司是一家总部位于英国的公司&#xff0c;专注于设计低功耗、高性能的处理器架构。ARM 架构以其精简指…

Vue前端开发记录(一)

本篇文章中的图片均为深色背景&#xff0c;请于深色模式下观看 说明&#xff1a;本篇文章的内容为vue前端的开发记录&#xff0c;作者在这方面的底蕴有限&#xff0c;所以仅作为参考 文章目录 一、安装配置nodejs,vue二、vue项目目录结构三、前期注意事项0、组件1、数不清的报…

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片&#xff0c;支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器&#xff0c;主频高达 240 MHz&#xff0c;内置 512 KB SRAM (TCM)&#xff0c;具有 45 个可编程 GPIO 管…