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中引入,注册以及使用
<child></child>
import Child from "@/components/child.vue"
export default {
data() {
. ...
},
components:{
Child
},
}
2.uniapp中的父子组件通信(跟vue一样)
父传子
- 父组件通过自定义属性向子组件传递数据
- 子组件通过props接收父组件传递的数据
示例:父传子
- index.vue:设置自定义属性msg像child组件传递数据
<view>
<child msg="我是父组件传递过来的数据"></child>
</view>
- component/child.vue:通过props接收index父组件传过来的数据
<template>
<view>
<text class="red">我是uniapp的子组件child</text>
<view>{{msg}}</view>
</view>
</template>
<script>
export default {
name:"child",
props:['msg'],
}
<child :msg="title"></child>
data() {
return {
title: '我是父组件传递过来的数据信息',
}
},
子传父
- 父组件通过自定义事件标签向子组件传递事件
- 子组件通过触发父组件定义事件的方式,来修改父组件数据
示例:子传父
3.uniapp的插槽slot的数据分发和作用域插槽
- 父组件通过调用子组件内部嵌套html内容作为slot分发给子组件
- 子组件通过在slot标签上添加属性,向父组件通信数据,作用域插槽
4.全局事件定义以及通信
- 在整个应用的任何地方均可以使用
uni.$on
创建一个全局事件 - 在整个应用的任何地方也均可以使用
uni.$emit
来触发全局事件,实现多事件之间的数据通信