微信小程序父子组件之间通信的 3 种方式

父子组件之间通信的 3 种方式

① 属性绑定
⚫ 用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容的数据
② 事件绑定
⚫ 用于子组件向父组件传递数据,可以传递任意数据
③ 获取组件实例
⚫ 父组件还可以通过 this.selectComponent() 获取子组件实例对象,这样就可以直接访问子组件的任意数据和方法

下面给出三种方式的代码示例:

  1. 属性绑定:

在父组件的 wxml 文件中:

<child-component data="{{dataFromParent}}"></child-component>

在父组件的 js 文件中:

Page({
  data: {
    dataFromParent: {
      name: 'Alice',
      age: 25
    }
  }
});

在子组件的 properties 中定义:

Component({
  properties: {
    data: {
      type: Object,
      value: {}
    }
  }
});
  1. 事件绑定:

在子组件的 wxml 文件中触发事件:

<button bindtap="sendDataToParent">发送数据到父组件</button>

在子组件的 js 文件中定义事件:

Component({
  methods: {
    sendDataToParent: function() {
      this.triggerEvent('sendData', {name: 'Bob', age: 30});
    }
  }
});

在父组件的 wxml 文件中绑定事件:

<child-component bind:sendData="handleReceiveDataFromChild"></child-component>

在父组件的 js 文件中定义事件处理函数:

Page({
  handleReceiveDataFromChild: function(event) {
    console.log(event.detail); // 输出:{name: "Bob", age: 30}
  }
});
  1. 获取组件实例:

在父组件的 js 文件中获取子组件实例:

Page({
  onLoad: function() {
    this.child = this.selectComponent('#child');
  },
  handleButtonClick: function() {
    console.log(this.child.data); // 输出子组件的 data 属性
    this.child.doSomething(); // 调用子组件的 doSomething 方法
  }
});

在子组件的 wxml 文件中给组件添加 id:

<view id="child"></view>

在子组件的 js 文件中定义方法:

Component({
  methods: {
    doSomething: function() {
      console.log('子组件执行了 doSomething 方法!');
    }
  }
});
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序中,父组件可以通过selectComponent方法获取子组件的实例,然后调用子组件中定义的方法。具体的步骤如下: 1. 在父组件的wxml文件中,引入子组件,并为子组件设置一个id属性,例如:<child-component id="myChild" /> 2. 在父组件的js文件中,使用this.selectComponent方法获取子组件的实例,传入子组件的id作为参数,例如: const childComponent = this.selectComponent('#myChild'); 3. 通过获取到的子组件实例,可以直接调用子组件中定义的方法,例如: childComponent.myMethod(); 通过以上步骤,父组件就可以成功调用子组件的方法了。 引用提供了一个示例代码,可以更好地理解这个过程。在父组件的js文件中,使用selectComponent方法获取到子组件的实例,然后调用子组件的具体方法。注意,子组件的方法需要在子组件的js文件中进行定义。 希望以上信息能够帮助到您!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [微信小程序 - 父组件调用子组件的函数方法(像 Vue.js 中 ref 属性一样,直接 this.$refs.xx 获取子组件...](https://blog.csdn.net/weixin_44198965/article/details/127462368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [微信小程序调用子组件的方法](https://blog.csdn.net/qq_53478650/article/details/129796569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值