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传递数据 // ...
随机推荐
- POI 导入、导出Excel
POI,全称Apache POI,是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.项目地址:Apache POI - t ...
- 【t085】Sramoc问题
Time Limit: 1 second Memory Limit: 128 MB [问题描述] Sramoc(K,M)表示用数字0,1,2,...,K-1组成的自然数中能被M整除的最小数.给定K,M ...
- Scheduler
先看看文档对于Scheduler的作用介绍 https://code4craft.gitbooks.io/webmagic-in-action/content/zh/posts/ch1-overvie ...
- mpvue的坑,持续更新-.-
mpvue... 坑 怎么说呢,去github看一下,发现还是有很多问题没有解决... 不支持filter 亲,到现在还没有支持filter哦.只能用替代方法了,用computed或者渲染前先处理数据 ...
- Sublime Text 安装中文、英文字体
在 Sublimte Text 如何使用默认的字体,英文好看,但是中文不好,所以我就找了一个支持中文英文的字体 YaHei Consolas Hybrid 这个字体看起来效果比较差 下载地址: 如果无 ...
- 【踩坑记录】vue单个组件内<style lang="stylus" type="text/stylus" scoped>部分渲染失效
vue组件化应用,近期写的单个组件里有一个的渲染部分样式渲染不上去 因为同结构的其他组件均没有问题,所以排除是.vue文件结构的问题,应该是<style>内部的问题 <style l ...
- vue-learning:32 - component - 异步组件和工厂函数
异步组件 只有在这个组件需要使用的时候才从服务器加载这一个组件模块,用于渲染,并且会把结果缓存起来供未来复用. 实现方法: 组件定义的时候,以一个工厂函数的形式传入,在需要组件的执行这个函数,然后将组 ...
- CF1137 C. Museums Tour
CF1137 C. Museums Tour 一般来说的正常思路:看到有向图的第一思路都是缩点(但是要分析一波证明强联通分量中的个体可以拼凑成整体,一般都是边和点可以经过无数次然后贡献只算一次这种类型 ...
- deep Q learning小笔记
1.loss 是什么 2. Q-Table的更新问题变成一个函数拟合问题,相近的状态得到相近的输出动作.如下式,通过更新参数 θθ 使Q函数逼近最优Q值 深度神经网络可以自动提取复杂特征,因此,面对高 ...
- Elasticsearch系列---实战搜索语法
概要 本篇介绍Query DSL的语法案例,查询语句的调试,以及排序的相关内容. 基本语法 空查询 最简单的搜索命令,不指定索引和类型的空搜索,它将返回集群下所有索引的所有文档(默认显示10条): G ...