Vue组件与组件通信(补充)

相对路径和绝对路径


相对路径:是指的相对自身的路径,从自身当前的位置开始找。

绝对路径:从项目的根目录开始找。


Vue的局部组件


组件是Vue最强大的功能之一。组件可以保证封装的代码的可复用性,组件是自定义元素,比如:导航栏header, 中部区域块banner,等等,个人理解就是一个可复用的结构性的代码块。

局部组件:只在一两个页面中去使用

步骤:一、创建     二、引入     三、注册     四、使用

局部组件的引入只能使用@去引入文件(  @指的项目根目录  )

page.vue使用局部组件
banner.vue
运行结果图


Vue的全局组件


全局组件:会在很多页面中复用(重复使用)

在main.js项目的主入口程序去引入全局组件,注册全局组件

main.js
common.vue
运行结果


父子组件之间的通信


父传子

页面可以包含很多的子组件

一个页面(pages目录里)不要包含很多的html或uniApp ui组件标签,尽量拆分成组件独立出去。

拆分出去的组件的内容,由数据驱动。

#props

类型: Array<string> |  Object

详细:可以是数组或对象,用于接收来自父组件的数据,props可以是简单的数组,或者使用对象作为替代,对象允许配置高级选项,如:类型检测、自定义验证、和设置默认值。

父组件page.vue
子组件banner.vue
运行效果图

对子组件接收过来的数据加以处理(对props接收过来的数据进行反转处理)

子组件banner.vue
运行效果图


子传父


我们点击button这个按钮,触发了sendSonData()这个事件,uni.$emit() 该机制会向父组件传一个数组数据sonData,并且去父组件通过页面加载的生命周期onLoad()利用uni.$on()去用这个事件。

数据捕获后,便会去挂载数据,挂载数据后,便在页面中去把数据渲染到页面中去。

PS:使用 uni.$emit() 时,传输的数据格式必须是对象

子组件banner.vue
父组件page.vue
运行前
运行后的结果

运用Vue的特性实现子传父

1、在子组件中利用按钮添加一个点击事件,利用 this.$emit() 将子组件的数据传给父组件。

2、父组件中通过子组件的自定义的事件名再去利用 this.$on() 去接收子组件传过来的数据。

3、参数 e 就是接收到的数据,可以再对接收到的数据加以处理。

banner.vue
page.vue
运行结果前
运行结果后



兄弟组件的通信机制


个人理解:

1、在uniapp项目的目录下的common文件夹中创建一个bus.js文件,作为一个‘通信车’,用于传输数据

2、创建Acom和Bcom两个兄弟组件

3、分别在Acom和Bcom两个兄弟组件之间   Acom组件引入bus.js通信车文件,通过事件车 bus.$emit() 将数据传出去

4、Bcom引入bus.js通信车文件,通过事件车bus.$on() 将数据接收进来

bus.js
Acom.vue
Bcom.vue
父组件brother.vue
运行点击前
点击后
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容