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

news/2024/7/20 3:02:53 标签: 微信小程序, 小程序

自定义组件

      • 组件的创建与引用
          • 1、创建组件
          • 2、引用组件
          • 3、全局引用VS局部引用
          • 4、组件和页面的区别
      • 样式
          • 1、组件样式隔离
          • 2、组件样式隔离的注意点
          • 3、stylelsolation的可选值
      • 数据、方法和属性
          • 1、data数据
          • 2、methods方法
          • 3、properties
          • 4、data和properties区别
          • 5、使用setData修改properties的值
      • 数据监听器
          • 1、什么是数据监听器
          • 2、监听对象属性的变化

组件的创建与引用

1、创建组件
  • 在项目的根目录中,鼠标右键,创建
    components -> test文件夹

  • 在新建的components -> test文件夹上,鼠标右键,点击"新建Component"

  • 键入组件的名称之后回车,会自动生成组件对应的4个文件,后缀名分别为js, json, .wxml 和.Wxss

注意:为了保证目录结构的清晰,建议把不同的组件,存放到单独目录中

2、引用组件
  • 局部引用

组件只能在当前被引用的页面内使用

页面的json配置文件中引用组件的方式,叫做“局部引用"

  • 全局引用

组件可以在每个小程序页面中使用

app.json全局配置文件中引用组件的方式,叫做“全局引用”

3、全局引用VS局部引用

根据组件的使用频率和范围,来选择合适的引用方式:
🎞️如果某组件在多个页面中经常被用到,建议进行“全局引用”
🎞️🎞️如果某组件只在特定的页面中被用到,建议进行“局部引用”

4、组件和页面的区别

从表面来看,组件和页面都是由js、.json. .wxml 和.WXSS这四个文件组成的。但是,组件和页面的.js与json文件有明显的不同:

💥组件的 json文件中需要声明"component": true属性
💥💥组件的 js文件中调用的是Component()函数
💥💥💥组件的事件处理函数需要定义到methods节点中

样式

1、组件样式隔离

默认情况下,自定义组件的样式只对当前组件生效,不会影响到组件之外的UI结构

2、组件样式隔离的注意点

app.wxss 中的全局样式对组件无效

只有 class选择器会有样式隔离效果,id 选择器、
属性选择器、标签选择器不受样式隔离的影响

建议:在组件和引用组件的页面中建议使用class选
择器,不要使用id.属性、标签选择器!

3、stylelsolation的可选值
可选值默认值描述
isolated表示启用样式隔离,在自定义组件内外,使用class指定的样式将不会相互影响
apply-shared表示页面wxss样式将影响到自定义组件,但自定义组件WXSS中指定的样式不会影响页面
shared表示页面Wwxss样式将影响到自定义组件,自定义组件WXss中指定的样式也会影响页面和其他设置了apply-shared或shared的自定义组件

数据、方法和属性

1、data数据

小程序组件中,用于组件模板渲染的私有数据,需要定义到data节点中

2、methods方法
methods: {
    addCount(){
      this.setData({
        count:this.data.count +1
      })
    this._showCount()
    },
    _showCount(){ //自定义方法建议以_开头
       wx.showToast({
         title: 'count值为' +this.data.count,
         icon:'none'
       })
    },
    
  }
3、properties
  properties: {
    //属性定义
    max:{  //完整定义属性的方式【当需要指定属性默认值时,建议使用此方式】
      type:Number, //属性值的数据类型
      value:10  //属性默认值
    },
    max:Number  //简化定义属性的方式【不许指定默认值时,可以使用简化方式】
  },
4、data和properties区别

小程序的组件中,properties属性和data数据的用法相同 ,他们都是可读可写的,只不过:

data 更倾向于存储组件的私有数据

properties 更倾向于存储外界传递到组件中的数据

 showInfo(){
      console.log(this.data);
      console.log(this.properties);
      console.log(this.data===this.properties);
    }
5、使用setData修改properties的值

由于data数据和properties属性在本质上没有区别,因此properties属性的值也可以用于页面渲染,或使用setDat为properties 中的属性重新赋值,

  // <!-- 使用setData修改properties的值 -->
  properties:{ max:Number} //定义属性

数据监听器

1、什么是数据监听器

数据监听器用于监听和响应任何属性和数据字段的变化,从而执行特定的操作。他的作用类似于vue中的watch侦听器。在小程序组件中,数据监听器的基本语法格式入下:

 observers:{
    '字段A,字段B':function(字段A的新值,字段B的新值){
      //do something
     }
  }
2、监听对象属性的变化

数据监听器支持监听对象中单个或多个属性的变化,示例语法如下:

Component({
	observers:{
		'对象:属性A,对象:属性B':function(){
			//触发此监听器 的3种情况
			//【为属性A赋值】使用setData 设置 this.data.对象.属性A 时触发	
			//【为属性B赋值】使用setData 设置 this.data.对象.属性B 时触发	
			//【直接为对象赋值】使用setData设置this.data.对象 时触发
			//do something
		}
	}
})
 methods: {
    changeR(){ //修改rgb对象r属性的值
      this.setData({
        'rgb.r':this.data.rgb.r + 5>255 ?255 :this.data.rgb.r +5
      })
    },
    changeG(){ //修改rgb对象g属性的值
      this.setData({
        'rgb.g':this.data.rgb.g + 5>255 ?255 :this.data.rgb.g +5
      })
    },
    changeB(){  //修改rgb对象b属性的值
      this.setData({
        'rgb.b':this.data.rgb.b + 5>255 ?255 :this.data.rgb.b +5
      })
    }
  }

http://www.niftyadmin.cn/n/5150597.html

相关文章

windows下tomcat控制台按天输出catalina.out日志

windows下tomcat控制台按天输出catalina.out日志 方法一方法二 windows服务器情况下&#xff0c;无法和linux服务器一样&#xff0c;启动web服务之后&#xff0c;直接tail查看日志&#xff0c;而windwos控制台的输出空间有限&#xff0c;如果遇到大量错误的情况下&#xff0c;c…

day8-操作系统初始化函数init

1.初始化代码 起点&#xff1a;磁盘引导程序需要将内核移入内存运行&#xff0c;并初始化多种模块和硬件 终点&#xff1a;运行第一个应用程序 系统的根文件系统 void init(void) 在0号进程运行的init函数 //获取有关硬件驱动的信息setup((void *) &drive_info…

linux中xargs的实用技巧

在Linux命令行中&#xff0c;有许多强大的工具可以帮助我们处理和操作文件、目录以及其他数据。其中之一就是xargs命令。xargs命令可以将标准输入数据转换成命令行参数&#xff0c;从而提高命令的效率和灵活性。本文将介绍xargs命令的基本用法&#xff0c;并通过生动的代码和输…

Angular-06:组件通讯

父子组件通讯 ① 向组件内部传递数据② 向组件外部传递数据 ① 向组件内部传递数据 input() 装饰器语法1&#xff1a;input() 变量名:类型&#xff1b;语法2&#xff1a;input(“变量名”) 别名:类型&#xff1b; 例&#xff1a;在子组件的模板标签上&#xff0c;使用[ ] 加上属…

Docker 从 安装 到 配置 到 实战:手把手带你入门

文章目录 前言什么是docker&#xff1f;&#xff01;docker的作用是什么&#xff1f;&#xff01; 一、下载docker1.卸载docker2.安装yum环境3.更新yum本地软件源4.安装Docker&#xff08;参数ce&#xff1a;社区版&#xff09;5.Docker使用中会涉及到各种端口&#xff0c;为了…

Linux的指令和用途(持续更新)

1. 基本指令&#xff1a; 概念介绍&#xff1a; 1. 目录&#x1f7f0;文件夹 Linux指令用法说明who查看哪些人登陆我的机器whoami (who am i)查看当前账号是谁 pwd 查看当前我所在的目录clear 清屏 tree 目录名&#xff08;文件夹名&#xff09;以树形结构列出该文件夹下的所有…

lvgl生成图片

网址&#xff1a;https://lvgl.io/tools/imageconverter CF_TRUE_COLOR:可以生成565&#xff0c;232&#xff0c;等多种形式的数组&#xff0c;选择Carray,会生成C数组。

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有&#xff1a;script、img、iframe 具有href的标签有&#xff1a;link、a 区别 src 是source的缩写。表示源的意思&#xff0c;指向资源的地址并下载应用到文档中。会阻塞文档的渲染&#xff0c;也就是为什么js脚本放在底部而不是头部的…