美文网首页
vue基础(3)—— 组件通信

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

作者: G_弦上的咏叹调 | 来源:发表于2019-03-07 17:42 被阅读0次

    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(状态管理)

    浅谈Vuex - 简书

    相关文章

      网友评论

          本文标题:vue基础(3)—— 组件通信

          本文链接:https://www.haomeiwen.com/subject/glnhcqtx.html