Vue 组件通信(二)

简介: Vue 组件通信

5、$parent 或$ root


通过共同祖辈p a r e n t 或者 parent或者parent或者root搭建通信侨联


兄弟组件

this.$parent.on('add',this.add)


另一个兄弟组件

this.$parent.emit('add')


6、$attrs 与$ listeners


适用场景:祖先传递数据给子孙

image.png


// child:并未在props中声明foo  
<p>{{$attrs.foo}}</p>  
// parent  
<HelloWorld foo="foo"/>


// 给Grandson隔代传值,communication/index.vue  
<Child2 msg="lalala" @some-event="onSomeEvent"></Child2>  
// Child2做展开  
<Grandson v-bind="$attrs" v-on="$listeners"></Grandson>  
// Grandson使⽤  
<div @click="$emit('some-event', 'msg from grandson')">  
{{msg}}  
</div>


7、provide 与 inject


在祖先组件定义provide属性,返回传递的值

在后代组件通过inject接收组件传递过来的值


祖先组件

provide(){  
    return {  
        foo:'foo'  
    }  
}  


后代组件

inject:['foo'] // 获取到祖先组件传递过来的值


8、vuex


适用场景: 复杂关系的组件数据传递


Vuex作用相当于一个用来存储共享变量的容器


9ab89587b31f8a886f781fbcd9c3ba64_65a889c4b0acce1605483d85f79e8bfc.png


state用来存放共享变量的地方


getter,可以增加一个getter派生状态,(相当于store中的计算属性),用来获得共享变量的值


mutations用来存放修改state的方法。


actions也是用来存放修改state的方法,不过action是在mutations的基础上进行。常用来做一些异步操作


小结


  • 父子关系的组件数据传递选择 props 与 $emit进行传递,也可选择ref
  • 兄弟关系的组件数据传递可选择$bus,其次可以选择$parent进行传递
  • 祖先与后代组件数据传递可选择attrs与listeners或者 Provide与 Inject
  • 复杂关系的组件数据传递可以通过vuex存放共享的变量


目录
相关文章
|
1天前
|
JavaScript
Vue实战-组件通信
Vue实战-组件通信
4 0
|
1天前
|
JavaScript
Vue实战-将通用组件注册为全局组件
Vue实战-将通用组件注册为全局组件
5 0
|
1天前
|
JavaScript 前端开发
vue的论坛管理模块-文章评论02
vue的论坛管理模块-文章评论02
|
1天前
|
JavaScript Java
vue的论坛管理模块-文章查看-01
vue的论坛管理模块-文章查看-01
|
1天前
|
JavaScript
vue页面加载时同时请求两个接口
vue页面加载时同时请求两个接口
|
1天前
|
JavaScript
vue里样式不起作用的方法,可以通过deep穿透的方式
vue里样式不起作用的方法,可以通过deep穿透的方式
|
1天前
|
移动开发 JavaScript 应用服务中间件
vue打包部署问题
Vue项目`vue.config.js`中,`publicPath`设定为&quot;/h5/party/pc/&quot;,在线环境基于打包后的`dist`目录,而非Linux的`/root`。Nginx代理配置位于`/usr/local/nginx/nginx-1.13.7/conf`,包含两个相关配置图。
vue打包部署问题
|
1天前
|
JavaScript 前端开发
iconfont 图标在vue里的使用
iconfont 图标在vue里的使用
11 0
|
1天前
|
资源调度 JavaScript 前端开发
vue 项目运行过程中出现错误的问题解决
vue 项目运行过程中出现错误的问题解决
|
2天前
|
存储 JavaScript
Vue当前时间与接口返回时间的判断
Vue当前时间与接口返回时间的判断
8 0