1、概述

vue由多个组件构成页面,在不同的组件中有不同的联系,组件之间的传值是十分有必要的

2、父子组件之间传值 --props和$emit

父传子:通过props

方法:子组件:props:['msg'] 父组件:<Child :msg="message" @changeData="getChildData"></Child>

子传父:通过$emit事件触发

方法:子组件:this .$emit('changeData',this.childMsg) 父组件:<Child :msg="message" @changeData="getChildData"></Child>

3、非父子组件之间的传值 -- 中间组件方式(bus)

方法:创建一个第三方组件--bus,用bus组件进行事件的触发与监听,相当于一个中间件一样。

实例代码:

Bus.js: import Vue from 'vue'; const Bus = new Vue(); export default Bus;

触发:bus.$emit('busEvent',this.childMsg)

监听: Bus.$on('busEvent',(res)=>{ console.log('bus监听到了'); console.log(res); })

4、各种组件之间传值 -- vuex存储

vuex类似一个仓库,存放的数据在vue中任何地方可以引用
import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({
state: { //this.$store.state.count调用
count: 233
},
getters: {
getCount(state) { //this.$store.getters.getCount调用
return state.count;
}
},
mutations: { //同步修改
addCount(state) { //
state.count++
},
reduceCount(state) { //this.$store.commit('reduceCount')调用
state.count--
}
},
actions: { //异步修改
addCountAsync(context) { //this.$store.dispatch('addCountAsync')调用陪你过
setTimeout(() => {
context.commit('addCount')
}, 1000)
}
},
modules: { }
})

5、在main.js文件定义全局bus

所谓的订阅发布者模式,对一个bus对象,通过它进行事件的监听与触发

在main.js文件中定义:



触发事件用:



监听事件用:



注意在一个组件里可能会多次挂载bus的监听事件,导致监听事件多次触发,可以用钩子函数对监听事件进行解绑:

用于无之间关系的组件的通信

代码连接

vue学习--组件之间的传值方式的更多相关文章

  1. 浅谈vue父子组件之间的传值

    前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ...

  2. VUE 父子组件之间通信传值 props和 $emit

    1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件          <div id="app" >               <tr ...

  3. vue组件之间的传值方式

    一.父组件向子组件传值方式 1.1父组件向子组件传数据方式 <!DOCTYPE html> <html lang="en"> <head> &l ...

  4. vue 兄弟组件之间的传值

    一. 子传父,父传子. 二. 1.兄弟之间传递数据需要借助于事件车,通过事件车的方式传递数据 2.创建一个Vue的实例,让各个兄弟共用同一个事件机制. 3.传递数据方,通过一个事件触发bus.$emi ...

  5. vue父子组件之间相互传值

    1. 子组件使用父组件方法,并向父组件传值 子组件代码 <template> <div class="menu"> <div class=" ...

  6. vue父子组件之间的传值

    引入组件 父组件 <div> <form-edit></form-edit> </div> import FormEdit from "路径& ...

  7. 前台VUE的组件之间传参方式

    路由传参 """ 转跳: <router-link :to="'/course/'+course.id">{{course.name}}& ...

  8. vue组件之间的传值

    vue中组件之间的传值有好几种情况 1.父向子传值 父组件向子组件传值使用props,直接上实例 city.vue是父组件,list.vue是子组件city.vue里定义cities和hotCitie ...

  9. vue 学习五 深入了解components(父子组件之间的传值)

    上一章记录了 如何在父组件中向子组件传值,但在实际应用中,往往子组件也要向父组件中传递数据,那么此时我们应该怎么办呢 1.在父组件内使用v-on监听子组件事件,并在子组件中使用$emit传递数据 // ...

随机推荐

  1. springboot 项目打包可运行jar文件

    eclipse 运行run as  maven bulid  ,填入package ,运行打包 java -jar xxx.jar

  2. H3C HDLC帧格式

  3. Linux 查看iptables状态-重启

    iptables 所在目录 : /etc/sysconfig/iptables # service iptables status #查看iptables状态 # service iptables r ...

  4. 4-2 setting中一定要将ROBOTSTXT_OBEY = False的注释去掉

    # Obey robots.txt rules##默认遵循robots协议的,默认去读取每个网站上的robots协议ROBOTSTXT_OBEY = False

  5. mysql ”Invalid use of null value“ 解决方法

    1.问题描述 因为要更改"information"表中的"编号"列为非空,使用数据库查询语句“alter table information modify '编 ...

  6. UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)

    传送门 参考资料: [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意: Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过: 其中 M1 辆列车从 1 ...

  7. 2019-9-2-C#命令行解析工具

    title author date CreateTime categories C#命令行解析工具 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 17:23: ...

  8. 原生js添加鼠标事件的兼容性写法

    兼容pc和移动端,还兼容了surface平板. surface平板特别坑,既可以用鼠标也能用触摸屏,也就是说同时有touch事件和mouse事件. function addEvent(_target, ...

  9. MySQL排序问题

    直接上SQL语句: SELECT * FROM user_test ORDER BY user_name ,user_money DESC; #user_name中如果是数字会先排在前面,然后在按字母 ...

  10. PowerShell 通过 WMI 获取系统服务

    本文告诉大家如何通过 WMI 获取系统服务 通过 Win32_Service 可以获取系统启动的服务 Get-WmiObject Win32_Service | Format-List Caption ...