关于微信小程序的父子组件互相传值

一:父组件传值给子组件

1. 在父组件中引用子组件

1.1 在父组件json中导入子组件

{
  "usingComponents": {
    "test":"../../components/test/test",
    "tabs":"../../components/tabs/tabs"
  }
}

看下图
在这里插入图片描述

1.2 在子组件的json中,把自己定义为子组件

{
  "component": true,
  "usingComponents": {}
}
  1. 在父组件中,子组件的引用处,绑定一个属性( aaa ),并传递想要给子组件的值
<tabs aaa="123"></tabs>
    1. 在子组件中的js中使用 properties 获取值,这样就可以在子组件中用 this.data.text 获取到这个值了
properties: {
    //要接收参数的属性名
    // aaa:{
    //   //参数的值类型
    //   type:String,
    //   //接收过来参数的默认值
    //   value:''
    // }
    list:{
      type:Array,
      value:[]
    }
  },

看下图
在这里插入图片描述

二:子组件传值给父组件

子组件向父组件传参

1.在父组件的子主件的标签上自定义一个事件

<tabs list="{{list}}" binditemClick="onItemClick"></tabs>

2.在子组件中通过triggerEvent

  1. 子组件在需要传值时,使用triggerEvent传给父组件一个事件(itemClick),并传递想要给父组件的值( activeId)
 this.triggerEvent("itemClick",{ activeId})
    1. 在父组件中,子组件的引用处,通过这个itemClickt事件绑定一个方法( onItemClick)
<tabs list="{{list}}" binditemClick="onItemClick"></tabs>
  1. 在父组件的js中,定义这个方法onItemClick,在这个方法内就可以获取到子组件传递过来的值了
//这个是在父主件的子主件自定义的一个事件
  onItemClick(e) {
    console.log('这里是父组件内的onItemClick事件', e);
    let {
      activeId
    } = e.detail;
    let {
      list
    } = this.data;
    list.forEach(item => item.isActive = item.id === activeId)
    this.setData({
      list: list
    })
  }

看下图
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值