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


    纯数据字段

    1、什么是纯数据字段

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

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

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

    2、使用规则

    在Component构造器的options节点中,指定pureDataPattern 为一个正则表达式,字段名符合这个正则
    表达式的字段将成为纯数据字段,示例代码如下:

    Component({
    	options:{
    	//指定所有-开头的数招段为纯数招字段
    		pureDataPattern:/*_/
    	},
    	data:{
    		a:true, //普通数据字晚
    		b:true//纯数据字段
    	}
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    组件的生命周期

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

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

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

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

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

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

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

    组件所在页面的生命周期

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

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

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

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

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

    pageLifetimes:{
        show:function(){ //页面被展示
          console.log('show');
        },
        hide:function(){ //页面被隐藏
          console.log('hide');
        },
        resize:function(size) { //页面尺寸变化
          console.log('resize');
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    3、生成随机的颜色值
    _randomColor(){      
    	this.setData({  
    	//为data里面的_rgb纯数据字段重新赋值       
     	_rgb:{         
      		r:Math.floor(Math.random() *256),
      		g:Math.floor(Math.random() *256),   
     		 b:Math.floor(Math.random() *256)        
      	}      
     })   
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    第1章-数据结构与算法是什么
    彻底理解装饰模式
    6.前端·新建子模块与开发(常规开发)
    System.IO.FileSystemWatcher的坑
    利用消球差透镜对各种偏振光束进行深聚焦
    Batch Normalization推理验证
    SuperMap GIS管线数据处理Q&A
    软件协会第01次活动第05次任务布置:爱心代码+演奏歌曲+typora使用pandoc导出+github注册登录+函数练习+写csdn文章
    达人评测r9 5900hx和i5 12500h选哪个好
    UIView和VC的生命周期
  • 原文地址:https://blog.csdn.net/m0_61016904/article/details/134215705