小程序开发-组件使用

一、组件的创建和使用

        1.创建步骤
1.在项目的根目录中,鼠标右键,创建components->test文件夹
2.在新建的components ->test文件夹上,鼠标右键,点击 新建Component
3.键入组件的名称之后回车,会自动生成组件对应的 4 个文件,后缀名分别为.js,.json,.wxml和.wxss
4.注意:为了保证目录结构的清晰,建议把不同的组件,存放到单独目录中
        2.使用自定义组件
1.介绍
全局引入(在app.json全局配置文件中引入组件)
局部引入(在页面.json配置文件中引入组件)

2.使用
    全局引入
      在app.json文件中配置
      {
        "usingComponents": {
          "navigation-bar": "/components/navigation-bar/navigation-bar"
        }
      }

    在.wxml中使用
      <navigation-bar></navigation-bar>


    局部引入
      在页面.json中配置
      {
        "usingComponents": {
          "navigation-bar": "/components/navigation-bar/navigation-bar"
        }
      }
      在.wxml中使用
      <navigation-bar></navigation-bar>
         3.使用场景
1.根据组件的使用频率和范围,来选中合适的使用方式
	组件在多个页面中经常被使用到,建议进行全局引入
	组件只是在特定的页面中被使用到,建议进行局部引用
        4.组件和页面的区别
1.从表面来看,组件和页面都是由.js、.json、.wxml和.wxss这四个文件组成的。但是,组件和页面的.js与.json文件有以下不同:
​    组件的.json文件中需要声明"component": true属性
    组件的.js文件中调用的是Component()函数
      整个程序启动调用的是App()
      某个页面的渲染调用的是Page()
      某个组件的渲染调用的是Component()
    组件的事件处理函数需要定义到methods节点中
        5.组件的数据、方法和属性
               1.组件定义数据
定义
  组件中使用的数据需要定义到data属性中

使用
  在.js文件
    Component({
        data: {    
            displayStyle: ''  
        },
    })
               2.组件的事件处理函数
定义
  组件中事件处理函数和自定义方法都要在methods中定义

使用
  .js文件
    Component({    
        methods: {
            getData(){} 
        }
    })
              3.组件 properties 属性
定义
    组件properties属性是用来接收来自父组件传递的数据

使用
    .js文件
    Component({
	     properties: {    
            background: {//完整的属性写法
                type: String, //属性类型
                value: ''    //属性默认值
            },
            back: {
                type: Boolean,
                value: true
            },
            max:Number  //不需要默认值可以简写
         }
     })
              4.使用setData修改properties的值
properties: {
  max:Number
},
 this.setData({max:11})


注意:直接修改属性会打乱之前的判断逻辑
          5.数据监听器
介绍
    数据监听器用于监听和响应属性或数据字段的变化,从而执行特定的操作。

使用
    1.监听字段变化
    Component({
	    observers:{
		    "字段1,字段2":function(字段1新值,字段2新增){
		    }
	    }
    })

    2.监听对象变化
    Component({
	    observers:{
    		//方法1
	    	"对象.属性A,对象.属性B":function(属性A,属性B){
	    		// 当属性A发生变化会触发
	    		// 当属性B发生变化会触发
	    		// 当对象整体发生变化也会触发
	    	}
	    	//方法2
   	    	'对象.**': function (newObj) {
   		       console.log(newName)
            }
	    }
    })
          6.组件的生命周期
介绍
    组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点,或遇到一些特殊的框架事件时被自动触发。


全部生命周期函数
    created     在组件实例被创建时执行
    attached    在组件实例进入页面节点树时执行
    ready		组件在视图层布局完成后执行
    moved		组件实例被移动到节点树另一个位置时执行
    detached    组件实例被从叶敏节点树移除时执行
    error		当组件方法抛出错误时执行

主要生命周期
    1.最主要的生命周期created、attached、detached
    2.created为组件实例刚创建时触发,此时还不能调用setData,通常情况下此声明周期只能用于给组件this添加一下自定义属性字段
    3.attached为组件完全初始化完成进入页面节点树后,this.data已完成初始化。这个生命周期是大多数初始化或者发送数据请求阶段
    4.detached为组件离开页面节点树后,离开页面时会触发页面中每个自定义组件的detached生命周期,此时适合做一些清除性工作

使用
    Component({
      lifetimes:{
        created(){
          console.log('创建');
        },
        attached(){
          console.log('节点树');
        },
        detached(){
          console.log("离开");
        }
      },
    })
7.组件所在页面的生命周期
介绍
  有时,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期
    show    组件所在页面被展示时执行
    hide    组件所在的页面被隐藏时执行
    resize	组件所在页面尺寸发生变化时执行


使用
    Component({
	    pageLifetimes: {
            // 页面被展示
            show() {
              console.log("页面展示");
            },
            // 页面被隐藏
            hide() {
              console.log("页面隐藏");
            },
            // 页面尺寸发生变化
            resize(size) {
              console.log("尺寸变化",size);
            }
          },
    })

注意
    页面开启 "pageOrientation": "auto" 属性,手机取消竖屏锁定,真机调试,把手机横竖切换,就会调用resize组件所在页面生命周期钩子函数。


配置
    .json文件
    {
      "pageOrientation": "auto"
    }
          8.插槽

1.介绍

在自定义组件的wxml结构中,可以提供一个 节点(插槽),用于承载组件使用者提供的wxml结构

 2.单个插槽

介绍
    在小程序中,默认每个自定义组件中只允许使用一个slot占位,这种个数上的限制叫做单个插槽

使用
    .wxml父组件(将插入组件中的内容放到引入的组件中)
        <child-rem>
          <view>ccc</view>
        </child-rem>

    .wxml子组件(组件将slot放到要插入的位置)
         <slot></slot>

3.定义多个插槽

使用
    1.在子组件.js文件定义属性
        Component({
          options:{
            multipleSlots:true //启动多个插槽
          },
        }

    2.定义站位插槽(子组件)
          <slot name='slot1'></slot>
          <slot name='slot2'></slot> 

    3.使用时通过指定属性slot的值类匹配插槽(父组件)
        <child-rem>
          <view slot='slot1'>aaa</view>
          <view slot='slot2'>bbb</view>
        </child-rem>
          9.父子组件传参

                1.属性绑定

介绍
    用于父组件向子组件的指定属性设置数据,仅能设置JSON兼容的数据(只能传递数据,不能传递方法)

使用
  父组件(传值)
    <child-rem  name='cs'></child-rem>
  子组件(接收)
    Component({
      properties: {
        name: {
          type: String,
          value: ''
        }
      },
    }

                2.事件绑定

介绍
  事件绑定用于实现子向父传值,可以传递任何类型的数据。

使用
    1.父组件(.js文件)配置接收数据方法
      childRemFn(e){
      	//e.detail 获取传递的值
        console.log(123,e.detail);
      },

    2.在wxml中通过自定义事件形式传递给子组件函数
      <child-rem bind:paramtFn="childRemFn" ></child-rem>

    3.在子组件(.js文件中)传给父组件值
      this.triggerEvent('paramtFn',{value:123}) 

                3.获取子组件实例

介绍
    获取子组件的实例对象,从而直接访问子组件的任意数据和方法。

使用
    1.在父组件(.wxml)
      <child-rem id="childRem" class="childRem1"></child-rem>
      <button bind:tap='getChildData'>获取子组件信息</button>
    2.在父组件(.js文件)
      getChildData(){
        // 根据id获取子组件信息
        let a = this.selectComponent('#childRem')
        // 根据class获取子组件信息
        let b = this.selectComponent('.childRem1')
      },
其他
        1.data和properties的区别
1.小程序组件中,data和properties数据的用法相同
2.区别
	data更倾向于存储组件的私有数据
	properties更倾向于存储外界传递到组件中的数据
	但是小程序的data和properties是同一个对象的不同引用
3.注意:
	不建议修改properties数据,如果要修改properties的数据, 最好通过子组件通信给父组件的方式实现

        2.触发提示框

wx.showToast({title:'cuow'})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值