小程序自定义组件实现父传子传值功能

本文介绍了如何在小程序中自定义组件,并通过WXML数据绑定和事件触发实现父组件向子组件的数据传递。利用properties属性接收父组件传递的参数,并通过triggerEvent方法将数据回传给父组件,类似于Vue的emit功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小程序用了一段时间了,我对里面组件的用法也有了一定了解,今天就自己封装一个组件来简要演示一下组件通信问题(主要是父传子

根据小程序官方文档的描述,组件传值主要分为:

  • WXML 数据绑定:用于父组件向子组件的指定属性设置数据
  • 事件:用于子组件向父组件传递数据,可以传递任意数据。
  • 父组件通过 this.selectComponent方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。

比如 父子属性数据传递:

list.wxml 父组件

	
	
 <view class="tabs">
    <z-tabs tabnames="{{item}}" currentIndex="{{currentIndex}}" index="{{index}}" data-index="{{index}}" wx:for="{{tabnames}}" wx:key="index" ></z-tabs>
  </view>

子组件z-tab.js

 properties: {
    tabnames: {
      type: String,
      value: ""
    },
    currentIndex: {
      type: Number,
      value: 0,
    },
    index: {
      type: Number,
      value: 0
    }

  },

//z-tabs.wxml
  <view  class="tab {{currentIndex==index ? 'active' :''}}"   > {{tabnames}} </view>

currentIndexindextabnames 为父组件向子组件传递的两个参数,子组件通过properties属性接收,并从里面取值应用到页面即可

同样,若子组件想要向父组件传递参数,则需要通过触发事件的方式( triggerEvent),作用类似vue中的 emit,提交需要传递的值

子组件:

//z-tabs.wxml
<view bindtap="changeIndex"></view>
//z-tabs.js
properties: {
    tabnames: {
      type: String,
      value: ""
    },
    currentIndex: {
      type: Number,
      value: 0,
    },
    index: {
      type: Number,
      value: 0
    }

  },

  /**
   * 组件的初始数据
   */
  data: {
    isactive: false,
  },

  /**
   * 组件的方法列表
   */
  methods: {
    changeIndex() {
    var myEventDetail = {params:1} // detail对象,提供给事件监听函数
      var myEventOption = {} // 触发事件的选项
      this.triggerEvent('myevent',myEventDetail ,myEventOption 
      }, {})
    }

  }

父组件:

  <z-tabs bindmyevent="myevent"></z-tabs>
myevent(e) {

    console.log(e)
  },

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值