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