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

目录

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://xiahunao.cn/news/2869815.html

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

相关文章

Three 材质纹理 (总结三)

THREE.MeshLambertMaterial&#xff08;网格 Lambert 材质&#xff09; 该材质使用基于非物理的Lambertian模型来计算反射率。可以用来创建暗淡的并不光亮的表面&#xff0c;该材质非常易用&#xff0c;而且会与场景中的光源产生反应。 MeshLambertMaterial属性 # .color : …

24年上半年英语四六级报名时间25地汇总一览表

目前有25地公布了报名时间&#xff0c;大多集中在3月中下旬&#xff0c;具体时间以学校通知为准。 7个省份官宣 • 贵州(官方)&#xff1a;3月18日12:00-3月29日16:00 • 黑龙江(官方)&#xff1a;3月18日14:00-3月29日17:00 • 江西(官方)&#xff1a;3月19日6:00-3月25日17:0…

05.BOM对象

一、js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。比如&#xff1a;变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型&#xff0c; 定义了一套操作HTML文档的APIBOM 浏览器对象模型&#xff0c;定义了一套操作浏览器窗口的API 二、windo…

deepseek-coder模型量化

1 简介 DeepSeek-Coder在多种编程语言和各种基准测试中取得了开源代码模型中最先进的性能。 为尝试在开发板进行部署&#xff0c;首先利用llama.cpp对其进行量化。 2 llama.cpp安装 git clone之后进入文件夹make即可&#xff0c;再将依赖补全pip install -r requirements.tx…

【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突

【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到…

原创 《vtk9 book》 官方web版 第四章 - 可视化管线(1 / 2)

在前一章中&#xff0c;我们使用简单的数学模型创建了图形图像&#xff0c;用于光照、视图和几何。光照模型包括环境光、漫反射和镜面效果。视图包括透视和投影的效果。几何被定义为一组静态的图形原语&#xff0c;如点和多边形。为了描述可视化过程&#xff0c;我们需要扩展我…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记12_移动平台(上)

1. 广告 1.1. 广告收入的来源 1.1.1. 向客户推荐广告投放网址 1.1.2. 提供有效提高产品广告点击率的咨询服务 1.1.3. 从合作伙伴的广告收入中捞上一笔 1.2. 对于广告主来讲&#xff0c;他们无意于与各家网站逐一谈判 1.2.1. 这种方式一是成本过高&#xff0c;二是费时费力…

Github 2024-03-17 php开源项目日报 Top9

根据Github Trendings的统计,今日(2024-03-17统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目9Blade项目2Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次关…

Delphi7应用教程学习1.3【练习题目】:文本及悬停文字的显示

这个例子主要用到了btn的Hint 属性&#xff0c;Hint是提示的意思。 还有Delphi7还是很好用的&#xff0c;改变了的属性是粗体&#xff0c;默认没有改变的属性为细体。

力扣新思路题:字符串轮转

非常简单的思路&#xff1a;将两个字符串s1接起来&#xff0c;并判断s2字符串是否是加长版s1字符串的子串 bool isFlipedString(char* s1, char* s2){if (strlen(s1) ! strlen(s2)) {return false;}int len strlen(s1);int i 0;char* arr (char*)malloc(sizeof(char) * len…

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

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

(x+2y+3z+4w)^4展开式经过合并同类项之后,xyzw的系数为?

求的展开式经过合并同类项之后&#xff0c;的系数 根据二项式定理&#xff0c;的系数为&#xff1a;

HarmonyOS NEXT应用开发—视频全屏切换案例

介绍 本示例介绍了Video组件和ohos.window接口实现媒体全屏的功能。 该场景多用于首页瀑布流媒体播放等。 效果图预览 使用说明&#xff1a; 点击全屏按钮&#xff0c;横屏媒体窗口。点击恢复窗口按钮&#xff0c;恢复媒体窗口。 实现步骤 在Video组件内调用 onFullscreen…

ARM 汇编指令:(七) STM/LDM多寄存器加载/多存储指令

目录 一.四种栈 1.满增栈&#xff1a;进栈&#xff08;先移动指针再入栈&#xff0c;指针往地址增大的方向移动&#xff09;&#xff1b;出 栈&#xff08;先出栈&#xff0c;栈指针往地址减小的地方移动&#xff09;。 2.满减栈&#xff1a;进栈&#xff08;先移动指针再入…

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

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

【ESP32 IDF】I2C的使用

文章目录 前言一、I2C驱动使用的步骤二、I2C的使用2.1 配置驱动程序2.2 安装驱动程序2.3 主机写入数据写入数据的过程接收数据的过程 总结 前言 ESP32是一款强大的微控制器&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;和嵌入式系统开发。它具备丰富的硬件接口&am…

23. BI - 基于酒店建立内容推荐系统

本文为 「茶桁的 AI 秘籍 - BI 篇 第 23 篇」 文章目录 基于内容的推荐酒店数据说明TF-IDF基于酒店做推荐数据探索建模并计算执行推荐 总结 Hi&#xff0c;你好。我是茶桁。 上一节课咱们终于是将矩阵分解的完整内容全部都给大家讲完了。矩阵分解是推荐系统里面比较重要的一个环…

前端Vue开发中的百度地图定位组件:实现定位、反向地址查询与详细地址展示

一、引言 在前端开发中&#xff0c;地图定位是一个重要的功能&#xff0c;它能够为用户提供直观、便捷的服务。在许多应用场景中&#xff0c;我们不仅需要显示当前的地图定位&#xff0c;还需要将定位坐标反向转成地址&#xff0c;并展示详细地址。本文将介绍如何使用Vue和百度…

Django 解决新建表删除后无法重新创建等问题

Django 解决新建表删除后无法重新创建等问题 问题发生描述处理办法首先删除了app对应目录migrations下除 __init__.py以外的所有文件:然后&#xff0c;删除migrations中关于你的app的同步数据数据库记录最后&#xff0c;重新执行迁移插入 问题发生描述 Django创建的表&#xf…

接口幂等性问题和常见解决方案

接口幂等性问题和常见解决方案 1.什么是接口幂等性问题1.1 会产生接口幂等性的问题1.2 解决思路 2.接口幂等性的解决方案2.1 唯一索引解决方案2.2 乐观锁解决方案2.3 分布式锁解决方案2.4 Token解决方案(最优方案) 1.什么是接口幂等性问题 幂等性: 用户同一操作发起的一次或多…