小程序~~3(自定义组件)

news2024/12/23 9:30:56

目录

1.自定义组件

创建和注册组件

数据和方法

属性properties

组件wxml的slot-插槽(难)

组件样式以及注意事项(难)

组件样式隔离(难)

修改checkbox样式(难)

数据监听函数observes

父往子传值

子往父传值

获取组件实例

组件生命周期

组件所在页面的生命周期

小程序生命周期总结

使用Component构造页面

组件复用机制behaviors

外部样式类


1.自定义组件

创建和注册组件

公共组件

在目录下新建文件夹components-在该文件夹下创建想要组件的文件夹-在该文件夹下新建component-在app.json文件中的"usingComponent"方法中添加组件的路径

页面组件

在页面下新建文件夹-在文件夹中新建组件-在页面的.json文件中的"usingComponent"方法中添加组件的路径

全局注册后可以在任意页面使用,局部注册只能在当前页面使用

在组件注册完成后,直接将组件名当成组件标签名即可

数据和方法

组件的数据和方法需要在组件.js的Component方法中定义

data定义组件的内部函数

methods 写事件处理函数

属性properties

properties是指组件的对外属性,主要用来接收组件使用者传递给组件内部的数据,和data一同用于组件的模块渲染

想要获取属性值,在methods方法中打印this.properties.value()

组件wxml的slot-插槽(难)

使用组件时,可以在组件中间写子节点,从而展示子节点中的内容,自定义组件要想接收子节点需要在模板中定义<slot/>节点,用于承载组件中间的子节点

默认情况下,一个组件的wxml中只能有一个slot,需要多个插槽时要在组件的js文件中声明options函数,在其中添加mutipleSlot属性

使用多个组件的时候,要给slot添加name属性来区分不同的slot,而在组件使用者中可根据slot名来传递内容

在同时拥有插槽和label值,可进行判断选择以哪种方式呈现文本值

slot插槽多的时候要命名,可以使用默认插槽,注意放置的位置

组件样式以及注意事项(难)

组件样式隔离(难)

isolated  样式隔离,自定义组件和组件使用者样式不会相互影响

apply-shared  组件使用者、页面中的wxss样式会影响到组件,但是定义在组件身上的样式不会影响到那二者

shared   组件使用者、页面中的wxss样式和定义在组件身上的样式会相互影响

修改checkbox样式(难)

复选框是公共组件

修改复选框,首先要在小程序开发文档中找到小程序提供的类名

在自定义组件中,想要修改复选框,首先要设置styleIsolation:'shared'属性,之后再进行修改

数据监听函数observes

可以在组件使用页面传递一个标签,也可以进行监听,与其他监听不同的是,它的数据不改变也能监听到,而其它情况只有数据改变才能监听到

监听单个数据,key数据对象,value回调函数里面放返回的新数据

监听多个函数,使用字符串的形式来选择数据,中间用逗号隔开,返回新值

监听对象内部属性的变化,使用通配符'对象.**'来监听对象的全部属性

父往子传值

子往父传值

在自定义组件的methods方法中通过this.triggerEvent('绑定事件函数',数据),在组件使用者的.wxml文件中的组件标签中通过bind绑定事件处理函数,并在组件使用者的.js文件中通过函数获取组件传递过来的数据

组件使用者绑定的函数是其在.js文件中接收数据的函数

获取组件实例

组件使用者可以在js文件中通过this.selectComponent方法,获取子组件实例对象,这样可以直接访问子组件的任何数据和方法

this.selectComponent()中放的是给子组件标签中命名的类选择器或者id选择器名

组件生命周期

组件的生命周期,指的是组件自身的一些钩子函数,这些函数在特定的时间节点被自动触发

组件的生命周期函数需要在lifetimes字段中声明

组件的生命周期函数有5个:created  attached   detached  ready moved

created 是组件实例创建完毕后执行,在该函数中不能使用setData,但可以通过this的方式给组件添加一些属性,如this.test:'测试'在attched函数中中就能打印出数据

attached   模板解析完成挂载到页面上时启动,在该函数中可放置setData,并打印组件的一些属性

detached  组件被销毁时执行

组件所在页面的生命周期

组件所在页面的生命周期需要在pageLifetimes字段中进行声明

主要的是小程序页面展示show(){}和页面隐藏hide(){}

小程序生命周期总结

使用Component构造页面

使用Component构造页面,要求对应的.json文件中包含usingComponents的定义段,页面Page中的一些生命周期方法(如onLoad()等以"on"开头的方法),在Component中要写在methods中才能生效

组件的属性Properties可以用于接受页面的参数,在onLoad()中可以通过this.data拿到对应的页面参数

组件复用机制behaviors

为了实现代码的复用,可以写一个behaviors.js文件来放置重复的内容,其中需要使用到Behavior({})方法,将重复的数据放进去,每个behavior可以包含一组属性、数据、生命周期函数和方法。在创建的时候可以给Behavior({})赋值给一个变量,在后续使用的时候可以直接用变量名,在Behavior({})方法之后要暴露出数据,写上“export default behavior”

在调用behaviors.js文件的时候要现在该页面的.js文件中导入,之后在Component({})中引入方法,注意behaviors是一个数组(还要注意调用的时候是behaviors,创建的时候是behavior)

当组件和它引用的behavior中包含同名的字段时,处理方法如下:

如果存在相同的properties,组件中的内容会覆盖掉behavior中的内容

如果存在相同的data且是对象类型(object),同名的数据字段,组件的会覆盖behavior的,如果组件中没有某个内容而behavior中有,那么两者会相互融合在一起

生命周期函数,每个都会执行,不会彼此覆盖

外部样式类

在Component中用extemalClasses定义外部样式类

先在组件使用者的标签中定义好类名,<custom09 extend-class="my-class"/>,后面在组件使用者的.wxss文件中设置样式属性用的也是my-class,但是在组件的.wxml文件中写的是<view class="extend-class">修改组件样式</view>,并且在Component中写的是extemalClasses:['extend-class'](注意什么时候写什么类名)

在同一个节点上使用普通样式类和外部样式类时,两个类的优先级未知,可以添加!important来保证外部样式类的优先级

还要注意的是如果styleIsolation属性是shared,那么外部样式类会失效

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

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

相关文章

Taming Lookup Tables for Efficient Image Retouching

Abstract 高清屏幕在终端用户相机、智能手机和电视等边缘设备中的广泛使用&#xff0c;刺激了对图像增强的巨大需求。现有的增强模型通常针对高性能进行优化&#xff0c;但不能减少硬件推断时间和功耗&#xff0c;尤其是在计算和存储资源受限的边缘设备上。为此&#xff0c;我…

等保2.0与安全编程:携手共筑网络安全防线

一、基本概念 等保2.0&#xff08;网络安全等级保护2.0&#xff09;&#xff1a;作为我国网络安全领域的基本国策和制度&#xff0c;等保2.0是对原有信息安全等级保护&#xff08;等保1.0&#xff09;的全面升级。它于2019年正式实施&#xff0c;旨在应对云计算、大数据、物联网…

基于SSM的停车场管理系统 毕业设计-附源码42934

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方案 1.4论文章节安排 2相关技术介绍 2.1 B/S结构 2.2 SSM框架 2.3 Java语言 2.4 MySQL数据库 3系统分析 3.1 可行性分析 3.2 系统功能性分析 3.3.非功能性分析 3.4 系统用例分析 3.5系统流程分析 3.5.1…

JAVA基础 - 反射

目录 一. 简介 二. java.lang.Class类 三. java.lang.reflect包 四. 创建对象 五. 调用方法 六. 调用成员变量 一. 简介 反射是 Java 语言中的一种强大机制&#xff0c;允许程序在运行时动态地获取类的信息、访问类的成员&#xff08;包括字段、方法和构造函数&#xff…

fal.ai发布超分辨率模型——AuraSR V2

今天&#xff0c;我们发布了单步 GAN 升频器的第二个版本&#xff1a; AuraSR。 我们在上个月发布了 AuraSR v1&#xff0c;社区的反响让我们深受鼓舞&#xff0c;因此我们立即开始了新版本的训练。 AuraSR 基于 Adobe Gigagan 论文&#xff0c;以 lucidrain 的实现为起点。Gi…

Off-by-One Error: 编码中的常见陷阱 ⚠️

Off-by-One Error: 编码中的常见陷阱 ⚠️ Off-by-One Error: 编码中的常见陷阱 ⚠️摘要引言正文内容1. 什么是 Off-by-One 错误&#xff1f;Off-by-One 错误的示例 2. 如何识别 Off-by-One 错误&#xff1f;2.1 使用调试器2.2 单元测试 3. 如何预防 Off-by-One 错误&#xff…

Python酷库之旅-第三方库Pandas(059)

目录 一、用法精讲 226、pandas.Series.pad方法 226-1、语法 226-2、参数 226-3、功能 226-4、返回值 226-5、说明 226-6、用法 226-6-1、数据准备 226-6-2、代码示例 226-6-3、结果输出 227、pandas.Series.replace方法 227-1、语法 227-2、参数 227-3、功能 …

【Python机器学习】Logistic回归——从疝气病症预测病马的死亡率

用Logistic回归来预测患有疝病的马的存活问题。这里的数据包括368个样本和28个特征。疝病是描述马肠胃痛的术语&#xff0c;这种病并不一定源自马的肠胃问题。 该数据集中包含了医院检测马疝病的一些指标&#xff0c;有些指标比较主观&#xff0c;有的指标难以测量&#xff0c…

docker部署elasticsearch和Kibana

部署elasticsearch 通过下面的Docker命令即可安装单机版本的elasticsearch&#xff1a; docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/u…

【STC32G12K128开发板】第3-9讲:手势识别(基于PAJ7620U2)

第3-9讲&#xff1a;手势识别&#xff08;基于PAJ7620U2&#xff09; 学习目的了解IK-PAJ7620U2手势识别传感器模块的功能。掌握IK-PAJ7620U2的I2C协议、操作流程&#xff0c;并编程实现配置IK-PAJ7620U2工作于接近检测和手势识别模式以及读取检测结果。 PAJ7620手势识别模块 产…

灰狼优化算法(GWO)的详细解读

一、引言 在优化问题中&#xff0c;我们常常需要寻找一个最优解&#xff0c;使得某个目标函数达到最小或最大值。为了高效地解决这类问题&#xff0c;研究者们从自然界中的生物行为汲取灵感&#xff0c;提出了多种群智能优化算法。灰狼优化算法&#xff08;Grey Wolf Optimize…

行为验证码的介绍

1.什么是行为验证码 行为式验证码是一种较为流行的验证码。从字面来理解&#xff0c;就是通过用户的操作行为来完成验证&#xff0c;而无需去读懂扭曲的图片文字。常见的有两种&#xff1a;拖动式与点触式。 2.行为验证码的概念 行为式验证的核心思想是利用用户的“行为特征”…

单火供电零线发生器 单火变零火线开关面板零火开关老房改造必备

创作 史新华 零线发生器套件与单火线供电套件&#xff0c;作为现代智能家居解决方案中的创新之作&#xff0c;它们犹如智能电气领域的魔术师&#xff0c;巧妙地解决了传统智能开关在单火线路环境中因无零线而难以应用的难题。这些套件&#xff0c;如同智能电气世界的桥梁&…

SQLite库笔记:命令行shell

SQLite项目提供了一个简单的命令行程序sqlite3&#xff0c;它允许用户对SQLite数据库手动输入和执行SQL语句。更多详情可参考官网&#xff08;https://www.sqlite.org/cli.html&#xff09;。 help SQLite shell命令的help信息如下&#xff1a; .auth ON|OFF Sho…

卷积神经网络 - 动机(Motivation)篇

序言 在深度学习的浩瀚星空中&#xff0c;卷积神经网络&#xff08; Convolutional Neural Networks, CNNs \text{Convolutional Neural Networks, CNNs} Convolutional Neural Networks, CNNs&#xff09;无疑是最为璀璨的一颗星&#xff0c;其诞生与崛起深刻改变了图像识别、…

线程池的优势与应用

线程池的优势与应用 1、线程池的优势2、应用场景 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、线程池的优势 资源复用&#xff1a;减少线程创建和销毁的开销&#xff0c;通过重用已存在的线程来提高效率。控制并发&#xff1a;有效管…

Solana公链

Solana 链的优势 Solana之所以能够实现高性能&#xff0c;主要是因为它采用了多种创新的技术和设计决策。下面是Solana能够达到高吞吐量、低延迟和低成本的一些关键因素&#xff1a; 1. 历史证明 (Proof of History, PoH)&#xff1a; Solana引入了一种独特的共识机制&#…

【C++题解】1022. 百钱百鸡问题

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1022. 百钱百鸡问题 类型&#xff1a;嵌套穷举 题目描述&#xff1a; 用 100 元钱买 100 只鸡&#xff0c;公鸡&#xff0c;母鸡&#xff0c;小鸡都要有。 公鸡 5 元 1 只&#x…

【Kubernetes】kubeadmu快速部署k8s集群

目录 一.组件部署 二.环境初始化 三.所有节点部署docker&#xff0c;以及指定版本的kubeadm 四.所有节点安装kubeadm&#xff0c;kubelet和kubectl 五.高可用配置 六.部署K8S集群 1.master01 节点操作 2.master02、master03节点 3.master01 节点 4.master02、master…

酒店管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;酒店管理员管理&#xff0c;房间类型管理&#xff0c;房间信息管理&#xff0c;订单信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;房间信息…