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 监听当前实例上的自定义事件.事件可以 ...
随机推荐
- Nginx的进程模型及高可用方案(OpenResty)
1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...
- unity 3D 学习笔记
1.父对象的初始位置设,即刚开始的空对象的根节点位置应当设置成(0,0,0) 这样设置可以避免以后出现奇怪的坐标. GameObject实际上就是一些组件的容器. unity 使用公用变量原因是,在U ...
- python网络爬虫笔记(八)
一.pthon 序列化json格式 1.将python内置对象转换成json 模块,dumps()方法返回的是一个str,内容是标准的JSON,dump()方法可以直接吧JSON写入一个file-li ...
- PHP编译安装时常见错误解决办法
转载自:http://www.bkjia.com/PHPjc/1008013.html This article is post on https://coderwall.com/p/ggmpfa c ...
- 打包谷歌浏览器 Chrome 已安装的插件
环境: OS - win7 64bit 旗舰版 Chrome - 37.0.2062.120 m 以 Smooth Gestures (一款鼠标手势插件)为例,在扩展程序面板 chrome://ext ...
- springboot配置Druid监控
整体步骤: (1) —— Druid简单介绍,具体看官网: (2) —— 在pom.xml配置druid依赖包: (3) —— 配置application.propertie ...
- 关于springboot整合配置pagehelper插件的方法
一,java代码配置法 这种方法个人感觉比较繁琐不是很推荐,而且也不怎么符合springboot的理念,但是胜在也能够用,所以就列起来,万一以后接手的代码是用这种方式的也方便自己维护. 首先引入jar ...
- Ubuntu 进入、退出命令行的快捷键
进入: Ctrl+Alt+F1 退出: Ctrl+Alt+F7(或者 Alt+F7) 进入命令行窗口:Ctrl+Alt+T
- ID3算法下的决策树
网上的内容感觉又多又乱,自己写一篇决策树算法.希望对别人有所启发,对自己也是一种进步. 决策树 须知概念 信息熵 & 信息增益 熵: 熵(entropy)指的是体系的混乱的程度,在不同的学科中 ...
- 关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法
如果在X64系统下我们想利用 MS SQL 的DTS导入导出 Oracle 数据,由 oracle 不支持路径中包含")",会引发 ORA-06413:连接未打开错误 解决的办法很 ...