2022-09-10 uni-app学习笔记(七) uniapp自定义组件介绍,uniapp组件中的父子组件通信,插槽(slot)和全局事件的定义以及通信

本文介绍了uni-app的自定义组件创建和使用步骤,包括全局注册和页面引入。详细讲解了父子组件间的通信方式,如父传子通过自定义属性,子传父通过触发父组件事件。同时,阐述了uni-app的插槽机制,用于数据分发和作用域插槽。最后,讨论了全局事件的定义和通信,实现了应用内的多组件数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.uniapp的自定义组件介绍
  • uniapp项目中的组件存放在component目录下,只支持vue单文件组件(即vue组件)
  • uniapp组件可以使用全局注册页面引入两种方式
uniapp组件的使用分为三步:
1.导入:import xxx from 'xxx'
2.注册:Vue.use("xx",xx) component:{xxx}
3.使用:<xxx />
示例:创建components/child组件并在index.vue中使用
  • step1:创建components目录,并在该目录下创建组件child,随便写点内容
  • step2:在index.vue中引入,注册以及使用
		<!-- 3.使用子组件child -->
		<child></child>
// 2.引入和注册子组件
// 引入
import Child from "@/components/child.vue"
export default {
	data() {
.		...
	},
	// 注册
	components:{
		Child
	},
}
2.uniapp中的父子组件通信(跟vue一样)
父传子
  • 父组件通过自定义属性向子组件传递数据
  • 子组件通过props接收父组件传递的数据
示例:父传子
  • index.vue:设置自定义属性msg像child组件传递数据
<view>
	<!-- 3.使用子组件child -->
	<child msg="我是父组件传递过来的数据"></child>
</view>
  • component/child.vue:通过props接收index父组件传过来的数据
<template>
	<view>
		<!-- 1.创建子组件 -->
		<text class="red">我是uniapp的子组件child</text>
		<!-- 父子组件传值:父传子 -->
		<view>{{msg}}</view>
	</view>
</template>

<script>
export default {
	name:"child",
	props:['msg'],
}
  • 改进:把msg中的数据改成使用data中的变量
<!-- 注意msg前面需要加冒号(:)-->
<child :msg="title"></child>
data() {
	return {
		title: '我是父组件传递过来的数据信息',
	}
},
子传父
  • 父组件通过自定义事件标签向子组件传递事件
  • 子组件通过触发父组件定义事件的方式,来修改父组件数据
示例:子传父
3.uniapp的插槽slot的数据分发和作用域插槽
  • 父组件通过调用子组件内部嵌套html内容作为slot分发给子组件
  • 子组件通过在slot标签上添加属性,向父组件通信数据,作用域插槽
4.全局事件定义以及通信
  • 在整个应用的任何地方均可以使用uni.$on创建一个全局事件
  • 在整个应用的任何地方也均可以使用uni.$emit来触发全局事件,实现多事件之间的数据通信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端OnTheRun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值