微信小程序学习四之 自定义组件 及 组件间通信

微信小程序自定义组件类似于页面,一个自定义组件由wxml、wxss、js、json文件组成。

一、快速创建组件

可在微信开发者工具中快速创建组件的文件结构,选中components文件夹,右键选择“新建Component”,输入组件名,将生成组件的文件结构。
在这里插入图片描述

二、声明组件

在组件的json文件中,对组件进行声明

{
  "component": true
}

三、组件内容分析

  • wxml和页面文件相同,书写标签结构,同时可以通过<slot></slot>标签用于占位,和vue类似,父组件可以使用任何内容代替<slot>标签。
  • js文件
    在组件的js文件中,需要使用Component()来注册组件,而非Page(),通过properties可以声明父组件传过来的数据,相当于vue中的props属性
  • wxss文件
    在组件中应该使用类名选择器,组件内声明的样式只在该组件内生效。

四、父组件向子组件传值

// 子组件 child.wxml
<view>
	<view>这是子组件的内容</view>
	<view>这是父组件传过来的内容:{{msg}}</view>
	// 占位符
	<slot></slot>
<view>

// 子组件 child.js
Component({
	properties: {
		msg: {
			type: String,
			value: ''	// 默认值
		}
	},
	data: {
	},
	methods: {
	}
})
// 父组件 parent.json,引入子组件
{
  "usingComponents": {
    "child": "../../components/child/child"
  }
}

// 父组件 parent.wxml
<view>
	<child msg="{{message}}">
		<view>这是用来替换slot的内容</view>
	<child>
</view>

// 父组件 parent.js
Page({
	data: {
		message: 'hello child'
	}
})

五、子组件向父组件传值

微信小程序和vue相同,通过事件触发实现父子组件之间的通信。
子组件通过 this.$triggerEvent('事件名', 参数值) 触发;
父组件在wxml中通过 bind+事件名 监听

// 子组件 child.wxml
<view>
	<button bindTap="emitParentEvent">点击触发</button>
</view>

// child.js
methods: {
	emitParentEvent(){
		this.$triggerEvent('emitevent', {message: '这是要传给父组件的消息'})
	}
}
// 父组件parent.wxml
<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 -->
<child bindemitevent="onMyEvent" />
<!-- 或者可以写成 -->
<child bind:emitevent="onMyEvent" />

// 父组件parent.js
methods: {
	onMyEvent(e){
		console.log(e.detail)
	}
}

这是关于微信小程序自定义组件较为基础的介绍,下篇将介绍小程序的生命周期。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值