vue学习--组件之间的传值方式
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学习--组件之间的传值方式的更多相关文章
- 浅谈vue父子组件之间的传值
		前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ... 
- VUE 父子组件之间通信传值 props和 $emit
		1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件 <div id="app" > <tr ... 
- vue组件之间的传值方式
		一.父组件向子组件传值方式 1.1父组件向子组件传数据方式 <!DOCTYPE html> <html lang="en"> <head> &l ... 
- vue 兄弟组件之间的传值
		一. 子传父,父传子. 二. 1.兄弟之间传递数据需要借助于事件车,通过事件车的方式传递数据 2.创建一个Vue的实例,让各个兄弟共用同一个事件机制. 3.传递数据方,通过一个事件触发bus.$emi ... 
- vue父子组件之间相互传值
		1. 子组件使用父组件方法,并向父组件传值 子组件代码 <template> <div class="menu"> <div class=" ... 
- vue父子组件之间的传值
		引入组件 父组件 <div> <form-edit></form-edit> </div> import FormEdit from "路径& ... 
- 前台VUE的组件之间传参方式
		路由传参 """ 转跳: <router-link :to="'/course/'+course.id">{{course.name}}& ... 
- vue组件之间的传值
		vue中组件之间的传值有好几种情况 1.父向子传值 父组件向子组件传值使用props,直接上实例 city.vue是父组件,list.vue是子组件city.vue里定义cities和hotCitie ... 
- vue 学习五 深入了解components(父子组件之间的传值)
		上一章记录了 如何在父组件中向子组件传值,但在实际应用中,往往子组件也要向父组件中传递数据,那么此时我们应该怎么办呢 1.在父组件内使用v-on监听子组件事件,并在子组件中使用$emit传递数据 // ... 
随机推荐
- [转]爬虫 selenium + phantomjs / chrome
			目录 selenium 模块 安装 phantomjs 浏览器 安装 chromedriver 接口 安装 对比两个接口 整合使用 基本实例 常用属性方法 定位节点 节点操作 其他操作 实例解析 - ... 
- FtpService [windows] 配置
			---恢复内容开始--- 1. 启动FtpService 2. 增加ftp用户 1) 复制ftpd.bat,重命名为adduser.bat 2) 把set MAIN_CLASS=org.apache. ... 
- [转]WebApi 后端文件传输至远程服务器
			/* 功能说明:微信退款需要有数字证书,而我们公司是做小程序平台的,会帮商家自动退款,所以会要求商家把微信证书上传至我们服务器,以便 微信退款. 使用HttpPostedFile 接受前端上传的文件, ... 
- P1081 弹珠游戏
			题目出处 灵灵和他的小伙伴聪聪发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只能攻击你所在的行.列里的所有敌人,然后你就可以获得 ... 
- P1032 队列的序列
			题目描述 现在告诉你有一个队列,一开始它是空的,首先你会把 1,2,3,-m 这 m 个数依次push入这个队列. 接着,会进行 n 次操作,每次操作你需要进行如下操作: 首先,获得队首元素,输出队首 ... 
- H3C进入目录---用户视图
			进入logfile文件目录 <H3C>cd logfile/ //进入目录 <H3C>pwd //显示当前所属的目录 cf:/logfil ... 
- linux内核指针和错误值
			很多内部内核函数返回一个指针值给调用者. 许多这些函数也可能失败. 大部分情况, 失 败由返回一个 NULL 指针值来指示. 这个技术是能用的, 但是它不能通知问题的确切特性. 一些接口确实需要返回一 ... 
- vue-learning:34 - component - 内置组件 - 缓存组件keep-alive
			vue内置缓存组件keep-alive <keep-alive>标签内包裹的组件切换时会缓存组件实例,而不是销毁它们.避免多次加载相应的组件,减少性能消耗.并且当组件在 <keep- ... 
- vue-learning:29 - component - 组件三大API之三:slot
			组件三大API之三: slot <slot>标签 v-slot指令 普通插槽 有默认值的插槽 具名插槽 作用域插槽 v-slot是Vue 2.6.0引入的一个新语法指令,目的是统一之前sl ... 
- 【35.12%】【POJ 1988】Cube Stacking
			Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 24007 Accepted: 8432 Case Time Limit: 100 ... 
