小程序 组件通信

文章详细介绍了在微信小程序中,如何通过自定义组件实现父子组件间的数据传递。父组件可以通过属性赋值向子组件传递数据,而子组件则能通过触发自定义事件将数据回传给父组件。子组件可以直接修改接收到的父组件数据,但这种修改不会影响父组件的状态,体现了无单向数据流的特性。
摘要由CSDN通过智能技术生成

自定义组件有自已的作用域,可以使用组件通信完成 父子组件之间的数据传递。

父传子

1.父组件通过属性赋值为子组件传递数组

<!-- 页面wxml中 -->

<view class="box">
   <!-- 应用自定义组件header -->
  <header isLogin="{{true}}" tips="{{msg}}" />
</view>

2.子组件通过properties节点接收父组件数据

// 组件js中
Component({
    
  // 接收父组件数据
  properties: {
    isLogin: Boolean, 
    tips: {
      // 属性的数据类型
      type: String,
      // 属性的默认值
      value: 'hello'
    }  
  },
    
   methods:{
       // 子组件可以直接修改父组件传递的数据,不会影响修改到父组件
       // 没有单向数据流限制
       setTips(){
           this.setData({
               tips:'hello world'
           })
       }
       
   }
})

注意:子组件可以直接修改父组件传递的数据,不会影响修改到父组件,没有单向数据流限制

3.查看或调试传入组件的数据与页面数据的查看方式不同,具体查看如下图所示:

说明:选中要查看的组件,通过右侧componentData面板查看

子传父

1.父组件在子组件上绑定自定义事件,提供自定义事件回调方法

在自定义事件回调方法中,通过默认形参event.detail获取数据

<!-- 页面wxml中 -->


  <!-- 应用自定义组件 -->
  <header isLogin="{{true}}" tips="{{msg}}"
  + bind:事件名="mycallback" />
// 页面js中
Page({
    
  // 父组件中的数据
  data: {
     msg:"你好!"
  },
    
  // 自定义事件的回调
+  mycallback: function (e) {
+    console.log('我是父组件中的回调函数...',e.detail);
+  }

})

2.子组件触发父组件自定义事件

通过this.triggerEvent('自定义事件名称',data)触发和传递数据,【 类似Vue中的 $emit( ) 】

// 组件js中
Component({

  methods: {
    sayHi: function () {
      // 并且将 {name: '小明', age: 18} 做为参数,传给父组件自定义事件的回调函数
+      this.triggerEvent('事件名', {name: '小明', age: 18});
    }
  }
    
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不叫虎子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值