【小程序】自定义组件及组件间传递数据

在小程序中,类似

在【component.wxml】中声明一个名为【comp】的组件

  • 注册组件

组件有局部和全局之分,局部组件只能在特定页面使用,而全局组件可以在所有页面使用。

  "usingComponents": {
    "comp":"/components/component"
  }

全局组件在【app.json】文件中的【usingComponents】字段注册,格式为———"组件名" : "组件路径"。

同理,局部组件在页面的json文件中注册。

  • 使用组件



在【home.wxml】中使用自定义组件

2.组件间传递数据

组件间传递数据是双向的,即父组件→子组件子组件→父组件

父组件是调用自定义组件的页面,而子组件是被调用的自定义组件。

  • 父组件向子组件传递数据

        父组件发送数据

// pages/home.js
Page({
  data:{
    msg:'父组件的数据'
  }
})

上述是父组件js文件中名为【msg】的字符串


在使用自定义组件时通过插值表达式将数据传递给子组件       

        子组件接收数据

// components/component.js
Component({
  properties: {
    msg:{}
  }
})

子组件在js文件的【properties】字段声明一个用来接收数据的属性【msg】




  这是组件
  
  {{ msg }}

标签中使用插值表达式展示父组件传递过来的数据

  • 子组件向父组件传递数据

        父组件接收数据



使用子组件时绑定触发事件并对其进行监听,触发事件为【myEvent】,监听方法为【getData】

// pages/home.js
Page({
  data:{
    msg:'父组件的数据',
    info:{}
  },

  // 监听触发事件的方法
  getData(e){
    this.setData({
      info:e.detail.info
    })
  }
})

在js中声明一个【info】对象,用来储存子组件传递过来的数据,定义监听方法将传递数据赋值给【info】

        子组件发送数据

// components/component.js
Component({
  data: {
    info:'子组件的数据'
  },

  lifetimes:{
    attached:function(){
      /* triggetEvent()参数:
      1.指定事件名、
      2.detail对象、
      3.事件选项(可选) */
      this.triggerEvent(
        'myEvent',{info:this.data.info}
      )
    }
  }
})

在子组件js中使用【this.triggerEvent()】方法向触发事件【myEvent】的监听方法【getData()】传递数据。

【this.triggerEvent()】有三个参数:

  1. 指定事件名
  2. 要传递的数据
  3. 事件选项(可选)

字段【lifetimes】是组件的生命周期,【attached】代表方法在组件实例进入页面节点树时执行。

3.参考资料:

组件间通信与事件 | 微信开放文档

你可能感兴趣的:(小程序,小程序,rpx,微信)