vue组件通信那些事儿
一、说说通信
通信,简言之,交流信息。交流结束后,把信息放在哪里,这是一个值得思考的问题。vue中保存状态有2种方式,组件内的data属性和组件外的vuex的state属性。
1、用state的场景
vuex解决多组件共享数据和组件间通信问题;
全局共享的状态,放在state中;
后端返回的数据,放在state中;
处理数据修改数据,放在state中。
2、用data的场景
数据渲染页面,放在data中;
页面中不需要持久化的数据,放在data中。
二、父子组件间通信
1、父组件给子组件传消息
//父组件,给子组件的props值赋值
<com-a ftoa="一朵花"></com-a>
Vue.component('com-a',{
//全局注册子组件A
})
//子组件
<h3>父亲给我了,{{ ftoa }}</h3>
props:['ftoa']
2、子组件给父组件传事件
//子组件
<input type="button" value="A和父亲说话" @click="eventAf">
methods:{
eventAf(){
this.$emit('a-f-msg',this.a);
}
}
//父组件,用v-on监听子组件
<com-a v-on:a-f-msg="listenToa"></com-a>
<h3>子组件A想告诉父亲,{{ tofather.aword }}</h3>
methods:{
listenToa(adata){
this.tofather.aword = adata;
}
}
三、兄弟组件间通信
//事件总线 const bus= new Vue();
1、子组件A给子组件B发事件
//子组件A
<input type="button" value="把值传给B" @click="eventAb">
methods:{
eventAb(){
bus.$emit('a-b-msg',this.a);
}
}
2、子组件B监听接收子组件A发的事件
//子组件B
<h4>A传过来的数据是:{{ a }}</h4>
mounted(){
var _this = this;
bus.$on('a-b-msg',(a)=>{
_this.a = a;
});
}
3、vuex
适用于复杂的组件通信。
四、前往代码
1、简单的组件通信(vue)
2、简单的组件通信(vue单文件组件)
3、复杂的组件通信(vue)
4、复杂的组件通信(vue单文件组件)
五、底层原理
vue组件通信那些事儿的更多相关文章
- vue组件通信的几种方式
最近用vue开发项目,记录一下vue组件间通信几种方式 第一种,父子组件通信 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue 2.Child ...
- vue 组件通信
组件 组件之间的数据是单向绑定的. 父组件向子组件通信 是通过子组件定义的props属性来实现.通过props定义变量与变量类型和验证方式. props简化定义 在简化定义中,变量是以数组的方式定义. ...
- VUE 组件通信总结
1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值 Child组件 <template> <span>{{message}}</span> ...
- vue组件通信&&v兄弟组件通信eventbus遇到的问题(多次触发、第一次不触发)
组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的 (vuex以后再说). 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <templ ...
- vue 组件通信传值
父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...
- Vue组件通信之Bus
关于组件通信我相信小伙伴们肯定也都很熟悉,就不多说了,对组件通信还不熟悉的小伙伴移步这里. 在vue2.0中 $dispatch 和 $broadcast 已经被弃用.官方文档中给出的解释是: 因为基 ...
- Vue组件通信的几种方法
上一节说到,vue.js是允许子组件通过props接受父组件的信息,但是不允许父组件通过props接受子组件的信息 1. $emit()和on 当子组件需要向父组件传递数据时,就要用到自定义事件. 使 ...
- vue组件通信之父子组件通信
准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html vue 脚手架安装及新建项目 ...
- vue组件通信之非父子组件通信
什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit 触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on 监听当前实例上的自定义事件.事件可以 ...
随机推荐
- laravel 配置设置
public function updateRegisterSetting(Request $request, Configuration $config) { $conf = $request-&g ...
- AI学习吧-购物车-添加商品接口
create接口流程 需求:向购物车添加商品 流程:写shopping_cart路由--->写ShoppingCart视图函数--->使用Authuser校验用户是否登录--->首先 ...
- C++设计模式——观察者模式(转)
前言 之前做了一个性能测试的项目,就是需要对现在的产品进行性能测试,获得测试数据,然后书写测试报告,并提出合理化的改善意见.项目很简单,我们获得了一系列性能测试数据,对于数据,我们需要在Excel中制 ...
- PyOpenCV图像逆时针旋转90度
warpAffine方法效果很搓,留下大片黑色区域. 使用flip和transpose可以实现逆时针旋转90度.先flip或先transpose均可. #coding:utf-8 import cv2 ...
- Ueditor设置默认字体、字号、行间距,添加字体种类(转)
Ueditor默认字体.字号.行间距的修改: ueditor默认字号是16号,默认字体为sans-serif,默认行间距为5px,如下图所示: 首先,修改ueditor.all.js文件中如上图红框中 ...
- LVS(IPVS)了解
从来都只是看文章,现在手工作一下. 参考URL: https://blog.csdn.net/langyue919/article/details/80935197 https://www.cnblo ...
- sed 详解【转】
原文地址:http://www.cnblogs.com/sparkdev/archive/2017/07/10/7138073.html 基本命令格式 sed [常用选项] 命令文本 输入 常用选项 ...
- springboot中使用拦截器、监听器、过滤器
拦截器.过滤器.监听器在web项目中很常见,这里对springboot中怎么去使用做一个总结. 1. 拦截器(Interceptor) 我们需要对一个类实现HandlerInterceptor接 ...
- 【CF446D】DZY Loves Games
题解: 不错的题目 首先要求的黑点个数非常多 比较容易想到矩阵乘法 于是我们可以求出从某个黑点出发到任意一个黑点之间的概率 发现不同出发点带来的变化只有常数项 于是我们可以预处理出从每个方程转移的系数 ...
- Jhipster Registry(Eureka Server) Docker双向联通与高可用部署
使用Compose来编排这个Eureka Server集群: peer1配置: server: port: 8761 eureka: instance: hostname: eureka-peer-1 ...