原生小程序如何 父给子组件传值交互

本文详细介绍了如何在微信小程序中定义、引入和调用自定义组件,包括组件声明、方法执行,以及父子组件间的通信,展示了selectComponent和triggerEvent在组件间交互中的应用。
摘要由CSDN通过智能技术生成

一、demo结构

1>页面index

2>自定义组件tx

二、如何定义一个组件

在tx.json中将component设置为true,即

20190703232745543.png

三、引入组件(在index页面引入自定组件tx)

1>在index.json中进行组件声明

20190703233219314.png

2>在index页面中以标签的形式引入组件

20190703233417379.png

四、在index页面中调用组件tx中的方法

1>在上定义节点id,id的名字随便起,如:

 
  1. <tx id="comp"></tx>

2>创建组件实例对象

 
  1. this.compData=selectComponent("#comp");

3>在需要的地方调用组件的方法

 
  1. this.compData.show();

五、具体代码:

1>index页面

index.wxml

 
  1. <view class="indexView">
  2. <view>index页面</view>
  3. <view class="btn" bindtap='click'>点我打印</view>
  4. <tx id="comp"></tx>
  5. </view>

index.wxss

 
  1. .indexView{
  2. display: flex;
  3. flex-direction: column;
  4. align-items: center;
  5. }
  6. .btn{
  7. background-color:aquamarine;
  8. color:#fff;
  9. font-size:30rpx;
  10. padding:10rpx 40rpx;
  11. border-radius: 10rpx;
  12. margin-top:50rpx;
  13. margin-bottom: 50rpx;
  14. }

index.js

 
  1. Page({
  2. onLoad: function(){
  3. this.compData = this.selectComponent("#comp")
  4. },
  5. click: function(){
  6. this.compData.show();
  7. }
  8. })

说明:调用数据的话直接:this.compData.data.名字

index.json

 
  1. {
  2. "usingComponents": {
  3. "tx":"/pages/tx/tx"
  4. }
  5. }

2>tx组件

tx.wxml

 
  1. <view>组件页</view>

tx.js

 
  1. Component({
  2. methods:{
  3. show: function(){
  4. console.log("show........")
  5. }
  6. }
  7. })

tx.json

 
  1. {
  2. "component":true
  3. }

六、点击按钮结果

输出:show……..

说明与延伸:1>组件实例对象在页面生命周期函数中初始化或在需要使用的地方(index.js中的click函数中)初始化都ok!

2>把index页面改成组件也是这样调用(父组件调用子组件中的方法),

只需将index页面进行一个简单的调整,在index.json中多加一个 “component”:true

即如下:

20190725125126921.png

然后将index.js中的page替换成Component,click方法放在methods中即可:

20190725125305703.png

最后输出:show……..

说明父组件调用子组件方法成功~

重点!!!

1》通过selectComponent不仅可以调用子组件的方法,还可以调用子组件内的任意数据!

2》子组件调用父组件里的方法与子组件向父组件传值一个原理,通过triggerEvent,所以说子组件调用父组件方法的同时也可以向父组件传值》

* 3》小程序自定义组件间传值可点此:组件间传值*

以上是父组件调用子组件的方法,下面进行一个补充,子组件调用父组件中的方法!

父组件index

index.wxml

 
  1. <view class="indexView">
  2. <son bindtransfer="slow"></son>
  3. </view>

index.js

 
  1. Component({
  2. methods:{
  3. slow: function(e){
  4. console.log("我是父组件中的slow")
  5. }
  6. }
  7. })

子组件:

son.wxml

 
  1. <view bindtap="clicks">点我调用父组件的方法</view>

son.js

 
  1. Component({
  2. methods:{
  3. clicks: function(){
  4. this.triggerEvent("transfer")
  5. }
  6. }
  7. })

最终的结果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N5bGVhcG4_size_16_color_FFFFFF_t_70

原生微信小程序中,组件可以通过selectComponent方法获取到组件的实例,然后调用组件的方法。首先,在组件的js文件中,使用selectComponent方法获取到组件实例,例如: ``` let childComponent = this.selectComponent('#childComponentId'); ``` 其中,'#childComponentId'是组件的id或者自定义组件名。然后,通过获取到的组件实例,就可以直接调用组件的方法,例如: ``` childComponent.childMethod(); ``` 这样就可以在组件调用组件的方法了。需要注意的是,在组件中,需要在methods中定义所要调用的方法,例如: ``` Component({ methods: { childMethod() { console.log('调用组件的方法'); }, }, }); ``` 这样,在组件调用组件的方法时,就会执行组件中定义的方法了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信小程序 组件调用组件事件和传递参数](https://blog.csdn.net/weixin_43452154/article/details/126771508)[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: 33.333333333333336%"] - *2* [原生微信小程序组件调用组件中的方法](https://blog.csdn.net/MICHAEL_PRINCE/article/details/123069512)[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: 33.333333333333336%"] - *3* [微信小程序组件组件传递数据](https://blog.csdn.net/weixin_48719720/article/details/124005537)[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: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值