【微信小程序】自定义组件(二)

自定义组件

纯数据字段

1、什么是纯数据字段

概念:纯数据字段指的是那些不用于界面渲染的data字段。8

应用场景:例如有些情况下,某些data中的字段既不会展示在界面上,也不会传递给其他组件,仅仅在当前组件内部使用。带有这种特性的data字段适合被设置为纯数据字段。

好处:纯数据字段有助于提升页面更新的性能

2、使用规则

在Component构造器的options节点中,指定pureDataPattern 为一个正则表达式,字段名符合这个正则

表达式的字段将成为纯数据字段,示例代码如下:

js 复制代码
Component({
	options:{
	//指定所有-开头的数招段为纯数招字段
		pureDataPattern:/*_/
	},
	data:{
		a:true, //普通数据字晚
		b:true//纯数据字段
	}
})

组件的生命周期

1、组件全部的生命周期函数
生命周期函数 参数 描述说明
created 无 在组件实例刚刚被创建时执行
attached 无 在组件实例进入页面节点树时执行
ready 无 在组件在视图层布局完成后执行
moved 无 在组件实例被移动到节点树另一个位置时执行
detached 无 在组件实例被从页面节点树移除时执行
error Object Error 每当组件方法抛出错误时执行
2、组件主要的生命周期函数

在小程序组件中,最重要的生命周期函数有3个,分别是created. attached. detached.

  • 组件实例刚被创建好的时候,created 生命周期函数会被触发

    • 此时还不能调用setData
    • 通常在这个生命周期函数中, 只应该用于给组件的this 添加- -些自定义的属性字段
  • 在组件完全初始化完毕、进入页面节点树后, attached生命周期函数会被触发

    • 此时, this.data 已被初始化完毕
    • 这个生命周期很有用, 绝大多数初始化的工作可以在这个时机进行(例如发请求获取初始数据)
  • 在组件离开页面节点树后,detached生命周期函数会被触发

    • 退出一个页面时,会触发页面内每个自定义组件的detached生命周期函数
    • 此时适合做一 些清理性质的工作
3、lifetimes节点

在小程序组件中,生命周期函数可以直接定义在Component构造器的第-级参数中,可以在lifetimes字段内进行声明(这是推荐的方式,其优先级最高)

组件所在页面的生命周期

1、什么是组件所在页面的生命周期

有时,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期。

例如:每当触发页面的show生命周期函数的时候,我们希望能够重新生成一一个随机的RGB颜色值。在自定义组件中,组件所在页面的生命周期函数有如下3个,分别是:

生命周期函数 参数 描述说明
show 无 在组件件所在的页面被展示时执行
resize 无 组件所在的页面被隐藏时执行
hide Object Size 组件所在的页面尺寸变化时执行
2、 pageLifetimes节点

组件所在页面的生命周期函数,需要定义在pageLifetimes节点中,示例代码如下:

js 复制代码
pageLifetimes:{
    show:function(){ //页面被展示
      console.log('show');
    },
    hide:function(){ //页面被隐藏
      console.log('hide');
    },
    resize:function(size) { //页面尺寸变化
      console.log('resize');
    }
3、生成随机的颜色值
js 复制代码
_randomColor(){      
	this.setData({  
	//为data里面的_rgb纯数据字段重新赋值       
 	_rgb:{         
  		r:Math.floor(Math.random() *256),
  		g:Math.floor(Math.random() *256),   
 		 b:Math.floor(Math.random() *256)        
  	}      
 })   
}
相关推荐
李纲明6 小时前
微信小程序维修拆机后口头加价或未确认就开工:先核验机快照与报价确认,再查补充报价与取机核验
微信小程序·devdiy·维修验机·报价确认·报价快照·补充报价·取机核验
wx1qq1com7 小时前
一桩带几台车:共享租赁桩位配比、取电与结算闭环设计
物联网·微信小程序·小程序
李纲明8 小时前
微信小程序场地长租月底对不上或口头占场撞场:先核合约预约与核销流水出账,再查附加费与转租归属
微信小程序·devdiy·场地长租·月结账单·核销流水·附加费·转租归属
2401_879692518 小时前
微信小程序照相与摄像功能实现——chooseImage 与 chooseVideo 详解
微信小程序·小程序·notepad++
律宏阔1 天前
微信小程序 + Taro + TDesign 去掉 [&&&],让普通 Tailwind 类接管局部样式
前端·微信小程序·taro
律宏阔1 天前
微信小程序 + Taro + 多语言实现与国际化检查实录
前端·微信小程序·taro
李纲明2 天前
微信小程序 getSystemInfo 提示已废弃、屏幕高度算错胶囊还对不齐?getWindowInfo 和 getDeviceInfo 怎么接才稳
javascript·微信小程序·小程序·小程序开发·devdiy
dreams_dream2 天前
微信小程序-使用npm包
微信小程序·小程序·npm
L1mbo2 天前
Lite模式 缓解微信开发者工具卡顿,附 uni-app 实践方案
前端·微信小程序
大数据技术派3 天前
等了一周,我的摸鱼小程序终于微信认证通过了
微信小程序