vue基础(3)——|vue基础(3)—— 组件通信

1.父→子:在父级的标签里直接写需要传递给子级的值,子级通过props属性接收传递过来的值。
1 ) . 父组件内:将需要传递给子组件的值通过v-bind(如果传递的是固定值,则不需要v-bind,直接属性名,属性值传递即可)。
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
msg 则是传递给子组件的信息 vue基础(3)——|vue基础(3)—— 组件通信
文章图片
这是父组件需要传递的信息 vue基础(3)——|vue基础(3)—— 组件通信
文章图片
父组件存储信息的位置 【vue基础(3)——|vue基础(3)—— 组件通信】2) .子组件内:在对应的子组件中,通过props属性接收传递过来的值,并在子组件中使用该值。"注意:父组件向子组件传递的数据,子组件是不允许改变的"(单向数据流)
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
页面效果 子组件可以规定接收的类型:String、Object、Array、Number、Boolean
default为默认值
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
2.子→父:父组件通过v-on:eventName="parentEventName"来设置监听,子组件通过$.emit('eventName')来触发事件。
1).子组件内:
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
子组件内部,利用$emit发布一个自定义事件。第一个参数为:发布的事件名;第二个参数为子组件向父组件传递的数据。↓
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
2).父组件内:
利用v-on(@)监听子组件的自定义事件
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
父组件的数据 效果:当点击子组件的返老还童键,父组件的年龄就会减2。(每点击一下就会减一次2)
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
3.兄弟组件通信
1)找共同的父级,先传给共同的父级,在由父级传给兄弟级。
2)事件总线Event Bus
new Vue 的实例上有两个方法:$on(监听事件)、$emit(发布事件),利用这样的方式,只要能访问到公用的实例,都可以随意的监听发布任意事件。例:
兄弟级One和Two
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
兄弟级One和Two 当点击组件1「改名字」,组件2会将Jenny改为组件1传递过来的名字
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
1> main.js文件里面,作为插件,创建新的实例
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
$eventBus为自定义 2> 组件One
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
点击事件 vue基础(3)——|vue基础(3)—— 组件通信
文章图片
3> 组件Two
vue基础(3)——|vue基础(3)—— 组件通信
文章图片
也可以直接访问根实例$root。
Event Bus的弊端:所有组件都可以改变数据,数据改变无规则,且无法调试,会造成数据混乱。(一般复杂的项目不建议使用)
4.跨级组件通信:Vuex(状态管理)
浅谈Vuex -

    推荐阅读