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

目录

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,那么外部样式类会失效

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值