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

简介: 【微信小程序】自定义组件

组件的创建与引用


1、创建组件


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


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


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


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


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
      })
    }
  }


目录
相关文章
|
17天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
17天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
1月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
35 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
70 1
微信小程序:轻松实现时间轴组件
|
2月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
641 1
|
2月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
81 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
349 3
|
2月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
57 0
微信小程序更新提醒uniapp
|
4月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
116 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
4月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
115 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序