vue组件通讯

#props传递数据

  • 父->子
//父组件传递数据
<template>
<Children :data="msg"></Children>
</template> <script>
import Children from "./Children";
export default {
components: {
Children
},
data() {
return { msg: 100 };
}
};
</script> //子组件接收数据
<script>
export default {
props: {
name: {
type: Number, //传递数据类型,不符合会发出警告
default: ()=>{} //指定默认值
}
}
};
</script>

#$emit

  • 子-父  $emit使用
//子组件   使用$emit自定义事件
<template>
<div @click="handler()">向父组件传递数据</div>
</template> <script>
export default {
methods: {
handler () {
this.$emit('change', '我是向父组件传递的数据');
}
}
};
</script> //父组件
<template>
<Children @change="receive()"></Children>
</template> <script>
import Children from "./Children";
export default {
components: {
Children
},
methods: {
receive (res) {
console.log('res:' + res);
}
}
};
</script>

#.sync

  • .sync
用法: 改变子组件或者父组件传递的值。

//父-子  子组件接收参考上面
<template>
<Children :data.sync="msg"></Children>
</template> //子->父
<template>
<div @click="$emit('update:name','向父组件传递的数据')"></div>
</template> <template>
{{ name }}
<Children :name.sync="name"></Children>
</template>
<script>
import Children from "./Children";
export default {
components: {
Children
},
data () {
name: '默认数据'
}
};
</script>

#$parent与$children

  • 爷孙组件,this.$parent, this.$children
//向上派发事件
Vue.prototype.$dispatch = function $dispatch(eventName, data) {
let parent = this.$parent;
while (parent) {
parent.$emit(eventName, data);
parent = parent.$parent;
}
}; this.$parent.$emit('change', '调用父组件的emit事件向上派发'); //向下派发事件
Vue.prototype.$broadcast = function $broadcast(eventName, data) {
const broadcast = function () {
this.$children.forEach((child) => {
child.$emit(eventName, data);
if (child.$children) {
$broadcast.call(child, eventName, data);
}
});
};
broadcast.call(this, eventName, data);
}; this.$children 访问子组件

#兄弟组件通信(EventBus)

Vue.prototype.$bus = new Vue();

//兄弟一
<div @click="handler()"></div>
<script>
export default {
methods: {
handler () {
this.$bus.$emit('send', '我是传递的数据');
}
}
};
</script> //兄弟二
<script>
export default {
methods: {
handler () {
let _self = this;
_self.$bus.$on('send', (res) => {
cosole.log('msg:' + msg);
});
}
}
};
</script>

#Provide与inject

//在父组件中注入数据
provide() {
return { parentMsg: "父亲" };
} //在任意子组件中可以注入父级数据
inject: ["parentMsg"] // 会将数据挂载在当前实例上

#$attrs

//父组件
<template>
<Children name="along"></Children>
</template> //子组件
<template>
{{ $attrs }}
//{ "msg": "along" }
</template>

Vue通讯的更多相关文章

  1. Vue.js——快速入门Vuex

    一. 什么是Vuex? Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. 上图中绿色虚线包裹起 ...

  2. Vue.js——十分钟入门Vuex

    一. 什么是Vuex?   Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...

  3. Vuex简介

    一. 什么是Vuex?   Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...

  4. vuex 使用

    一.什么是Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化 二. 为什么要使用Vuex ...

  5. uni-app 生命周期函数

    应用生命周期 函数名 说明 onLaunch 当uni-app 初始化完成时触发(全局只触发一次) onShow 当 uni-app 启动,或从后台进入前台显示 onHide 当 uni-app 从前 ...

  6. uniapp 入门

    uniapp官网 uni-app 是一个使用 Vue.js (opens new window)开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以及各种小 ...

  7. 【原】vue单文件组件互相通讯

    在vue中,我们可以把一个页面各个部分单独封装起来,做成各种小组件,然后加载,这样的好处是代码维护起来比较容易,重复的代码多处调用! 在一个vue项目中,单文件组件以.vue形式文件命名 每个组件之间 ...

  8. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...

  9. Vue中父子组件通讯——组件todolist

    一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...

随机推荐

  1. python ASCII编码集

  2. oracle Sql语句分类

    dml语句:数据操作语句[insert,update,delete] ddl语句:数据定义语言[create table,drop table] dql语句:数据查询语句[select] dtl语句: ...

  3. NDK(1)简介

    AndroidNDK Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”. Android程序运行在Dalv ...

  4. WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping 的解决方法

    问题描述:VS2012使用验证控件出现“ WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 jque ...

  5. 伪元素 before 和 after 各种妙用

    大家可能对伪类和伪元素有点迷糊,在介绍具体用法之前,简单介绍下伪类和伪元素.伪类大家听的多了,伪元素可能听到的不是那么频繁,其实 CSS 对这两个是有区分的. 这里整理总结下: 有时你会发现伪类元素使 ...

  6. php中 instanceof有什么作用

    php中 instanceof有什么作用 作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口.

  7. 有什么类方法或是函数可以查看某个项目的Laravel版本的?

    查看composer.json文件: "require": { "php": ">=7.0.0", "fideloper/p ...

  8. UA

    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...

  9. Codeforces Round #189 (Div. 1 + Div. 2)

    A. Magic Numbers 不能出现连续的3个4,以及1.4以外的数字. B. Ping-Pong (Easy Version) 暴力. C. Malek Dance Club 考虑\(x\)二 ...

  10. Python--day46--MySQL自定义函数

    1,mysql自定义函数(mysql函数会降低查找速度,使用 了函数的行和列不能再用索引查找了,这样对性能要求高的需求就不能这样写) 函数调用 select f(参数1,参数2): 对函数进行调用: