微信小程序⾃定义组件、父子组件传值

1、⾃定义组件

1.1. 创建⾃定义组件
可以在微信开发者⼯具中对应的目录下,右键快速创建组件的⽂件结构
在这里插入图片描述
在这里插入图片描述

类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成

1.2 组件中的.js文件
在组件的 js ⽂件中,需要使⽤ Component() 来注册组件,并提供组件的属性定义、内部数据和 ⾃定义⽅法

Component({
  // 里面存放的是 要从父组件中接收的数据
  properties: {
    test: {
      // 期望要的数据是 string类型, value为属性值
      type: String,
      value: 'default',
    }
  },
  data: {
    // 这里是一些组件内部数据
    someData: {}
  },
  methods: {
    // 这里是一个自定义方法
    customMethod: function(){}
  }
})

2 使⽤⾃定义组件

2.1 声明引⼊⾃定义组件
⾸先要在需要引入组件的⻚⾯的 json ⽂件中进⾏引⽤声明。还要提供对应的组件名和组件路径

{
  // 引用声明
  "usingComponents": {
    // 要使用的组件的名称     // 组件的路径
    "my-header":"/components/myHeader/myHeader"
  }
}

2.2 ⻚⾯中使⽤⾃定义组件

<view>
  <!-- 以下是对一个自定义组件的引用 -->
  <my-header text="使用创建的组件"></my-header>
</view>

3.父子组件传值

  1. ⽗组件通过绑定属性的⽅式给⼦组件传递值

  2. ⼦组件通过触发事件的⽅式向⽗组件传递值

3.1 代码实现过程

⽗组件代码

// page.wxml,
// tabItems 为传递到子组件的自定义属性,mytap 为绑定的自定义方法
<tabs tabItems="{{tabs}}" bindmytap="onMyTab" >
    内容-这里可以放插槽
</tabs>
// page.js
 data: {
    tabs:[
     {name:"tab1"},
     {name:"tab2"}
   ]
 },
 onMyTab(e){
   console.log(e.detail);
},

⼦组件代码

// com.wxml
<view>
  <view>
    <block  wx:for="{{tabItems}}" wx:key="{{item}}">
      <view bindtap="handleItemActive" data-index="{{index}}">{{item.name}}</view>
    </block>
  </view>
  
  <view class="tab_content">
    // 插槽
    <slot></slot>
  </view>
</view>
// com.js
Component({
  // 里面存放的是 要从父组件中接收的数据
  properties: {
    // 接收父组件tabItems属性
    tabItems: {
      type: Array,  // 数组类型
      value: []    // 默认值
  },
  /**
   * 组件的初始数据
   */
  data: {
  },
  /**
   * 组件的方法列表
   */
  methods: {
    handleItemActive(e){
      // 这里触发父组件自定义方法 mytap,并传递参数
      this.triggerEvent('mytap','子组件中的值');
   }
 }
})

⾃定义组件触发事件时,需要使⽤ triggerEvent ⽅法,指定 事件名 、 detail 对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值